【问题标题】:how to access ListView with CheckedTextView?如何使用 CheckedTextView 访问 ListView?
【发布时间】:2014-02-16 06:14:13
【问题描述】:

我现在正在开发一个使用 ListView 的应用程序 CheckedTextView 在由 ArrayAdapter 管理的每个项目上 支持多选。我的 ListView 中的内容是动态的,即 意味着,可以在运行时更改。现在我尝试使用 ListView.getCheckedItemPositions() 获取所有检查项目,因为我想要 保存所有检查的位置并在用户返回时自动检查它们 又是这个页面。所以我需要为每一页保存检查结果。

对于第一页,一切正常。但是当用户去 另一个页面做一些选择,ListView返回的结果数组 包含一些从未检查过的位置。我不知道为什么 ListView 有 这种奇怪的行为。即使对于实际上没有检查的页面,但 ListView 给我一个结果,表明有一个项目已被检查。

谁能教我如何获得 CheckedTextView 的位置 在其 OnClickListener 回调中?

示例代码不胜感激。

提前谢谢...

【问题讨论】:

    标签: android listview checkedtextview


    【解决方案1】:

    列表视图会循环使用它的视图,因此当您转到不同的页面然后返回上一页时,列表视图会为其视图调用 getView() 函数。为确保检查视图的顺序没有混淆,请在初始化适配器之前创建一个包含 所有 视图检查状态的数组列表。然后将 arraylist 作为适配器构造函数的参数传递。在那里,在 getView() 函数中,根据 arraylist 设置每个可检查文本视图的检查状态。然后,返回活动类并覆盖 onItemClick() 事件。使用调用函数时提供给您的视图,执行以下操作以获取可检查的文本视图并设置其检查状态:

    listView1.setOnItemClickListener(new OnItemClickListener() 
    {
        @Override
        public void onItemClick(AdapterView<?> arg0, View selectedView, int position , long id)
        {
            CheckedTextView tv = (CheckedTextView)selectedView.findViewById(R.id.textview);
            if (tv.isChecked())
            {
                tv.setChecked(false);
                checkStatesOfViews.get(position) = false;
            }
            else
            {
                tv.setChecked(true);
                checkStatesOfViews.get(position) = true;
            }
    

    } });

    【讨论】:

    • CheckableTextView如何使用?
    • 查看this 了解如何使用 CheckableTextView
    猜你喜欢
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 2016-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-27
    • 1970-01-01
    相关资源
    最近更新 更多