自定义Listview和复选框/按钮的问题

时间:2011-08-16 13:33:40

标签: android listview button checkbox custom-controls

我遇到了自定义Listview和(复选框或按钮)的问题。我按照指南(android devolopers的食谱)和我的自定义Listview显示正确。选中的复选框滚动时出现可见错误。(选中了错误的Checkboexes)

我按照指南 http://www.vogella.de/articles/AndroidListView/article.html#listviews_performance 但它不起作用。如何正确保存状态?

问候语 安德烈亚斯

1 个答案:

答案 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));
}