在android中,listView应用非常多,常见的是使用List<HashMap<String, Object>>初始化SimpleAdapter后适配ListView,往往存在下面几种应用场景
1.特殊数据机构构造ListView
比如用List<Object>之类的数据,一般是实现自定义的Adapter,继承BaseAdapter,实现下面四个方法
@Override
public int getCount() {
}
@Override
public Object getItem(int position) {
}
@Override
public long getItemId(int position) {
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
}
2.使用自定义adapter对应实现隔行变色,或者加入竖线实现表格效果
这个在网上有个例子不错,可以参考
http://blog.csdn.net/yjg428/article/details/6402010
3.listView中实现复选框
参考网上的资源http://blog.csdn.net/honor21/article/details/6960773实现的,不过开始不能调试成功,做了部分修改,这里的要点是自定义adapter对应中getView方法的修改
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// 生成条目界面对象
convertView = inflater.inflate(resource, null);
//复选框对象
checkBox = (CheckBox) convertView
.findViewById(R.id.checkBox);
final ViewCache cache = new ViewCache();
cache.checkBox = curveCheckBox;
convertView.setTag(cache);
} else {
checkBox = cache.curveCheckBox;
}
//objects是构造adapter的数据列表,实际应用中为具体的domain对象
final Objects object = objects.get(position);
// 复选框点击事件监听
//这里发生点击事件后,listView中的选中状态被更新,写代码更新数据源列表中每个数据是否点击的状态
//上层逻辑可以通过访问数据源列表objects的方法,得到是那些item被点击
curveCheckBox.setOnCheckedChangeListener(new OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
// TODO Auto-generated method stub
if (curveCheckBox.isChecked()) {
object.setChecked(1);
} else {
object.setChecked(0);
}
}
});
//初始化listView使用,有些应用需要保存选中状态,按照选中状态初始化listView
if (object.getChecked() == 0) {
// 是否选中:0未选中1选中
checkBox.setChecked(false);
} else {
checkBox.setChecked(true);
}
return convertView;
}