喜糖

移动开发工程师 。涉及 android、ios、jni

导航

针对BaseAdapter的扩展

Posted on 2011-09-14 00:42  喜糖  阅读(487)  评论(0编辑  收藏  举报

针对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;
}