我遇到了自定义Listview和(复选框或按钮)的问题。我按照指南(android devolopers的食谱)和我的自定义Listview显示正确。选中的复选框滚动时出现可见错误。(选中了错误的Checkboexes)
我按照指南 http://www.vogella.de/articles/AndroidListView/article.html#listviews_performance 但它不起作用。如何正确保存状态?
问候语 安德烈亚斯
答案 0 :(得分:0)
您必须将已检查的项目保存在列表变量中(在您的Adapter子类中)并设置正确的状态(选中/取消选中),具体取决于该项目是否存在于列表变量中。
private List<MyItem> mCheckedItems; //In your adapter subclass
在列表变量中添加/删除项目:
//The AdapterView.OnItemClickListener, is present where you set myListView.setOnItemClickListener(this);
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id)
{
MyItem item = myAdapter.getItem(position);
myAdapter.updateCheckedItems(item);
}
public void updateCheckedItems(MyItem item) //In your adapter subclass
{
if(!mCheckedItems.contains(item))
{
mCheckedItems.add(item);
}
else
{
mCheckedItems.remove(item);
}
}
设置复选框的正确状态:
public View getView(int position , View view , ViewGroup parent) //In your adapter subclass
{
final MyItem item = getItem(position);
CheckBox checkBox = (CheckBox)view.findViewById(R.id.checkBox);
checkBox.setChecked(mCheckedItems.contains(item));
}