针对BaseAdapter可以有一些扩展,比如在一行中加入几个元素如下图所示。
为了完成上面的内容,需要在布局文件中加入一个布局文件R.layout.listview_item,这个布局文件中描述了要显示的内容。
自定义MyAdapter来继承BaseAdapter。
必须要覆写getCount() 和getView()方法。
关键代码:
public View getView(final int position, View convertView, ViewGroup parent) {
//List中的一条数据
DataModel item;
//设置布局中内容与数据的对应关系,通过ID进行设置
if (convertView == null) {
item = new DataModel();
convertView = inflater.inflate(R.layout.listview_item, null);
item.setImView((ImageView) convertView.findViewById(R.id.listview_image));
item.setCheckBox((CheckBox) convertView.findViewById(R.id.listview_checkbox));
item.setText((TextView) convertView.findViewById(R.id.listview_text));
convertView.setTag(item);
} else {
item = (DataModel) convertView.getTag();
}
//设置数据
if (position % 2 == 0) {
item.getCheckBox().setChecked(true);
} else {
item.getCheckBox().setChecked(false);
}
item.getCheckBox().setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(context, datas.get(position).getText(), Toast.LENGTH_SHORT).show();
}
});
item.getImView().setImageDrawable(getResources().getDrawable(datas.get(position).getImageId()));
item.getText().setText(datas.get(position).getText());
return convertView;
}