【问题标题】:Problem with custom Listview and Checkboxes/Buttons自定义列表视图和复选框/按钮的问题
【发布时间】:2011-10-28 02:01:22
【问题描述】:

我在使用自定义列表视图和(复选框或按钮)时遇到了麻烦。我按照指南(android 开发者的食谱)和我的自定义 Listview 正确显示。滚动选定的复选框时发生可见错误。(检查了错误的复选框)

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

问候 安德烈亚斯

【问题讨论】:

    标签: android listview button checkbox custom-controls


    【解决方案1】:

    您必须将选中的项目保存在列表变量中(在您的适配器子类中)并根据项目是否存在于列表变量中设置正确的状态(选中/未选中)。

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

    【讨论】:

    • 我必须在哪里“实现 OnItemClickListener”?在扩展的 ArrayAdapter> 类上? onItemClick 函数从未进入。你添加的 doc 元素是什么?
    • 更新了我的答案,很抱歉不清楚。如果对您有帮助,请将其标记为答案。
    • 我不能使用 onItemClick,因为我使用的是 onItemListClick。上面的指南向我展示了我的答案。不过谢谢。
    • 即使你使用onItemListClick,你也可以做- protected void onListItemClick(ListView l, View v, int position, long id) { MyItem item = myAdapter.getItem(position); myAdapter.updateCheckedItems(item); }
    猜你喜欢
    • 2023-03-13
    • 2012-12-15
    • 2011-07-23
    • 2013-08-06
    • 1970-01-01
    • 2012-10-18
    • 2013-12-13
    • 1970-01-01
    • 2019-02-16
    相关资源
    最近更新 更多