ListView组件常见的两个问题以及解决方法
通用的ListView组件,地址:CommonListView
ListView组件常见的两个问题以及解决方法:
- ListView中添加抢夺焦点的组件(CheckBox、Button等),ListView的Item会无法点击。
解决方法:
-1.在布局文件的CheckBox中添加属性android:focusable="false"
-2.在CheckBox的父布局中添加android:descendantFocusability="blocksDescendants"
以阻止焦点往子组件的传递
- convertView复用引起的一屏之外的CheckBox选中的问题。 解决方法:
-1.在Bean中添加一个是否选中的变量,添加get和set方法,然后在继承的Adapter中的convert方法中
cb.setChecked(bean.isChecked());
cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
bean.setChecked(cb.isChecked());
}
});
-2.先在Bean中添加是否选中的变量,添加get和set方法,在Adapter中添加一个List存储CHeckBox是否选中
java
cb.setChecked(false);
if (mPos.contains(hoder.getPosition())){
cb.setChecked(true);
}
cb.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//bean.setChecked(cb.isChecked());
if (cb.isChecked()) {
mPos.add(hoder.getPosition());
} else {
//这里要注意remove的是对象而不是位置(index),所以强转为Integer类型
mPos.remove((Integer) hoder.getPosition());
}
}
});
Let me know what you think of this article on twitter @Yanlei_Hello or leave a comment below!