【问题标题】:Android - setSelected in OnItemClick in ListViewAndroid - 在 ListView 中的 OnItemClick 中的 setSelected
【发布时间】:2011-01-26 00:36:22
【问题描述】:

我正在尝试在 ListView 中设置 OnItemClick 事件中选择的项目,但它不会让项目保持选中状态。我做错了什么?

lView.setOnItemClickListener(new OnItemClickListener()
   {
    @Override
    public void onItemClick(@SuppressWarnings("rawtypes") AdapterView parent, View clickedview, int position, long id)
    {
     clickedview.setSelected(true); 
        mItemsAdapter.select(position);
    }
   }); 

几件事:
1. 我正在尝试在列表视图上实现多选。
2. 我无法从 ListActivity 扩展,因为 Activity 已经从 BaseActivity 自定义类扩展。
3. mItemsAdapter 是扩展 BaseAdapter 的自定义 ItemsAdapter 适配器。
4. 我不需要那里的复选框,只是为了能够看到选中的行就可以了。
5.ItemsAdapter覆盖getView(),通过inflating xml设置行的布局

【问题讨论】:

    标签: android listview multiple-select


    【解决方案1】:

    我可以设法让 ListView 的一个项目在长按时设置为选中:

    @Override
    public boolean onItemLongClick(AdapterView<?> parent, View view,
            int position, long id) {
        parent.requestFocusFromTouch(); // IMPORTANT!
        parent.setSelection(position);
        return true;
    }
    

    它只有在我打电话给requestFocusFromTouch() 之后才起作用。

    【讨论】:

    • 加一为requestFocusFromTouch()
    【解决方案2】:

    我目前没有太多时间。所以今天晚些时候我会再看看。 不管怎样,看看我以前的问题,我也遇到了同样的问题:

    如果您的解决方案不在其中(我认为在第一个解决方案中),我们将需要更多代码来帮助您。

    希望这会有所帮助。

    【讨论】:

    • 谢谢我看到第一篇文章的代码有点不同,我确实遇到了与项目跳转相同的问题。那是什么?我现在要试试这个方法。
    • @dropsOfJupiter OK 试试,如果有问题告诉我!
    • @dropsOfJupiter “问题”是滚动到列表中的每一行(视图)都被重用于显示的行。这必须处理,并且“新”视图(行)的引用需要更新。由于某种原因,普通的onClick() 方法不再起作用
    【解决方案3】:

    使用内置的选择功能我运气不佳。

    我看到您有自己的自定义适配器,我猜这意味着您将自定义视图膨胀为行。如果您的行有任何内容,那么我认为您将无法正确使用 setSelections。

    我通过使用自己的模型和函数解决了这个问题。列表中的每个项目都有数据来确定它是否被选中。然后我可以遍历该数组,切换选择,甚至通过更改值和调用适配器上的 notifydatasetchanged 来更新 UI(它使用 getView 并根据我的选择模型进行检查以进行检查)。

    【讨论】:

    • 谢谢,我在某处看到了checkedtextview 的实现,尽管我需要一些代码,但我也会尝试一下。您甚至可以使用 OnTouchEvent 执行此操作,这似乎有点过头了。不应该有一些非常简单的东西吗? :) 顺便说一句,checkedtextview 是控件还是 xml 文件?我有自己的 xml 文件,其中包含 4 到 6 个控件,它们都根据对象中返回的内容动态打开/关闭。它不仅仅是纯文本视图。很多东西都是在适配器getView()中完成的
    猜你喜欢
    • 1970-01-01
    • 2016-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-17
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多