SpinnerAdapter에서 getView와 getDropDownView의 차이점
SpinnerAdapter를 구현하면 getDropDownView를 얻 습니다 . getView
확장해야 할 때 가지고있는 것과 어떻게 다른 가요BaseAdapter
?
다음 코드를 보면 getView와 getDropDownView에 이름과 값 배열이 있습니다.
private void initView() {
SpinnerDropDownAdapter sddadapter = new SpinnerDropDownAdapter(this);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, sddadapter.name);
Spinner getViewSP = (Spinner) findViewById(R.id.getview_sp);
getViewSP.setAdapter(adapter);
Spinner getViewWDropDownSP = (Spinner) findViewById(R.id.getview_w_drop_down_sp);
getViewWDropDownSP.setAdapter(sddadapter);
}
static class SpinnerDropDownAdapter extends BaseAdapter implements
SpinnerAdapter {
Context context;
SpinnerDropDownAdapter(Context ctx) {
context = ctx;
}
String[] name = { " One", " Two", " Three", " Four", " Five", " Six",
" Seven", " Eight" };
String[] value = { " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8" };
@Override
public int getCount() {
return name.length;
}
@Override
public String getItem(int pos) {
// TODO Auto-generated method stub
return name[pos];
}
@Override
public long getItemId(int arg0) {
// TODO Auto-generated method stub
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
TextView text = new TextView(context);
text.setTextColor(Color.BLACK);
text.setText(name[position]);
return text;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
TextView text = new TextView(context);
text.setTextColor(Color.BLACK);
text.setText(value[position]);
return text;
}
}
getDropDownView 메서드가 구현되지 않은 경우 드롭 다운 팝업이 getView에서 뷰를 가져옵니다. 따라서 이름 만 표시됩니다.
getView와 getDropDownView가 모두 구현되면 전자는 이름 을 얻고 후자는 value 를 얻습니다. 나머지 스피너는 getview에서 이름 을 얻고 드롭 다운 팝업은 value 를 얻습니다 .
받아 들여지는 대답은 약간 복잡해 보입니다.
getView
-사용자가 스피너를 누르기 전에 스피너에 표시되는 값으로, 각 값보기는 convertView 매개 변수로 조정할 수 있습니다.getDropDownView
-사용자가 스피너를 누른 후 사용자가 선택할 수있는 값 목록으로, 목록의 각 값은 convertView 매개 변수로 조정될 수 있습니다.
getView
및 getDropDownView
다른 레이아웃을 표시 할 수 있습니다.
Spinner를 만들고 class ImageTextAdapter extends ArrayAdapter<String>
어댑터로 사용 합니다. 및을 getView
모두 표시 할 수 있도록 재정의 합니다. 그러나 .ImageView
TextView
getDropDownView
스피너를 누르기 전의 스크린 샷입니다.
스피너를 누른 후
다음 코드로 스피너를 초기화합니다.
String[] spinnerTexts = {"Tanzania", "Thailand"};
int[] spinnerImages = {R.drawable.tanzania, R.drawable.thailand};
ArrayAdapter<String> adapter = new ImageTextAdapter(this, spinnerTexts, spinnerImages);
Spinner spinner = (Spinner) findViewById(R.id.spinner);
spinner.setAdapter(adapter);
다음은 ImageTextAdapter.java입니다.
public class ImageTextAdapter extends ArrayAdapter<String> {
int[] images;
public ImageTextAdapter(Context ctx, String[] texts, int[] images) {
super(ctx, android.R.layout.simple_spinner_item, texts);
this.images = images;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View row = getLayoutInflater().inflate(R.layout.row, parent, false);
TextView textView = (TextView) row.findViewById(R.id.textView);
textView.setText(getItem(position));
ImageView imageView = (ImageView) row.findViewById(R.id.imageView);
imageView.setImageResource(images[position]);
return row;
}
}
SpinnerAdapter를 다음과 같이 사용할 수 있습니다.
public class FolderSpinnerAdpater extends BaseAdapter implements SpinnerAdapter {
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
return null;
}
}
BaseAdapter.java에서
public View getDropDownView(int position, View convertView, ViewGroup parent) {
return getView(position, convertView, parent);
}
무시 getView()
하고 getDropDownView()
다른보기를 반환하면 차이점을 찾을 수 있습니다.
'developer tip' 카테고리의 다른 글
R? 목록에서 임의의 요소를 선택하십시오. (0) | 2020.12.04 |
---|---|
XSLT에서 문자열을 비교할 때 "같지 않음"을 지정하는 방법 (0) | 2020.12.04 |
두 개의 출력 파일 이름이 동일한 출력으로 확인 됨 (0) | 2020.12.04 |
Cloud Foundry 설명 (0) | 2020.12.04 |
Java에서 Selenium WebDriver를 사용하여 파일을 업로드하는 방법 (0) | 2020.12.04 |