当你实现SpinnerAdapter时,你得到了getDropDownView,当你需要扩展BaseAdapter
时,它与你拥有的getView
有什么不同。
发布于 2015-09-17 21:20:48
getView
和getDropDownView
可以显示不同的布局。
我创建了一个微调器,并使用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;
}
}
发布于 2017-03-02 17:32:31
我们可以这样使用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()
,返回不同的视图,你会发现不同之处。
https://stackoverflow.com/questions/13433874
复制相似问题