Spinner
作为下拉选项列表 还是非常不错 且易用的 同时 也存在一些局限性 比如: 标题栏 下拉栏 显示内容必须一致 这使得其
实用性大打折扣
1. 先说说其不足之处 即: 标题 下拉 显示内容 相同问题:
* 定义待显示内容 以TextView为例:
String[] content = {
"eoe.android","eoe.mobile","eoe.mark","eoe.rd","eoe.mobile"
};
* 定义 CustomAdapter :
public class CustomAdapter extends BaseAdapter {
Activity activity;
public CustomAdapter(Activity a){
activity = a;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return content.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView tv = new TextView(activity);
tv.setText(content[position]);
tv.setTextSize(20);
return tv;
}
}
* emulator 运行效果 可以看出 标题 下拉 显示内容 是一样的
2. 使得 标题 下拉 二者显示内容不同
* 定义标题显示内容:title 下拉继续使用上面定义的content
String[] title = {
"0","1","2","3","4","5"
};
* 定义 CustomSpinnerAdapter:
public class CustomSpinnerAdapter implements SpinnerAdapter {
Activity activity;
public CustomSpinnerAdapter(Activity a){
activity = a;
}
@Override
public View getDropDownView(int position, View convertView,
ViewGroup parent) {
// TODO Auto-generated method stub
TextView tv = new TextView(activity);
tv.setText(content[position]);
tv.setTextSize(20);
tv.setTextColor(Color.RED);
return tv;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return content.length;
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public int getItemViewType(int position) {
// TODO Auto-generated method stub
return IGNORE_ITEM_VIEW_TYPE;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
TextView tv = new TextView(activity);
tv.setText(title[position]);
tv.setTextColor(Color.GREEN);
return tv;
}
@Override
public int getViewTypeCount() {
// TODO Auto-generated method stub
return content.length;
}
@Override
public boolean hasStableIds() {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean isEmpty() {
// TODO Auto-generated method stub
return false;
}
@Override
public void registerDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
// TODO Auto-generated method stub
}
}
* emulator 运行截图 注意二者的不同显示