记录一下Spinner控件的使用,和listview一样,它需要通过adapter来传递数据,指定item的view
private void initSpinner() {
workTypeAdapter = new SpinnerAdapter(types);
spWorktype.setAdapter(workTypeAdapter);
spWorktype.setPopupBackgroundDrawable(getDrawable(R.drawable.bg_edit_input));
//设置spinner的向下偏移量
spWorktype.setDropDownVerticalOffset(DensityUtil.dp2px(this, 40));
spWorktype.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
newWorkType = spWorktype.getSelectedItem().toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
adapter的创建:
public class SpinnerAdapter extends BaseAdapter {
private List<String> list = new ArrayList<>();
private Context mContext;
public SpinnerAdapter(List<String> list, Context mContext) {
this.list = list;
this.mContext = mContext;
}
public SpinnerAdapter(String[] mList) {
this.list = Arrays.asList(mList);
}
public SpinnerAdapter(List<String> mList) {
this.list = mList;
}
public void update(List<String> date){
this.list = date;
notifyDataSetChanged();
}
public void update(String[] mList){
this.list = Arrays.asList(mList);
notifyDataSetChanged();
}
@Override
public int getCount() {
return list.size();
}
@Override
public String getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.spinner_item, null);
}
TextView textView = (TextView) convertView.findViewById(R.id.tv_spinner);
textView.setText(getItem(position));
return convertView;
}
}