自定义列表视图和复选框/按钮的问题

发布于 2024-11-29 23:55:06 字数 348 浏览 2 评论 0原文

我在自定义列表视图和(复选框或按钮)方面遇到了麻烦。我遵循指南(android 开发者的食谱)并且我的自定义列表视图正确显示。滚动选定的复选框时发生可见错误。(选中了错误的复选框)

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

问候语 安德烈亚斯

i´m in trouble with a custom Listview and (Checkboxes or Button). I follow a guide (the android devolopers´s cookbook) and my custom Listview show correctly. An visisble Error occured when selected Checkboxes are scrolling.(Wrong Checkboexes are checked)

I followed the guide on
http://www.vogella.de/articles/AndroidListView/article.html#listviews_performance
but it doesn´t work. How to save the state correctly?

Greeting
Andreas

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

蘑菇王子 2024-12-06 23:55:06

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

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

You will have to save the checked items in a list variable (in your Adapter subclass) and set the correct state (checked/unchecked) depending upon whether the item is present in the list variable.

private List<MyItem> mCheckedItems; //In your adapter subclass

Add/remove an item from the list variable:

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

Set the correct state of the checkbox:

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));
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文