Android - 在ListView中OnItemClick中的setSelected

时间:2011-01-26 00:36:22

标签: android listview multiple-select

我正在尝试在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适配器 我在那里不需要一个复选框,只是为了能够看到选中的行很好 5. ItemsAdapter重写getView()并通过膨胀xml

设置行的布局

3 个答案:

答案 0 :(得分:5)

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

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

只有在我拨打requestFocusFromTouch()后才能使用。

答案 1 :(得分:0)

使用内置功能进行选择我没有太多运气。

我看到你有自己的自定义适配器,我猜这意味着你将自定义视图扩展为行。如果您的行中有更多的文本,那么我认为您无法正确使用setSelections。

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

答案 2 :(得分:0)

我目前没有太多时间。所以今晚我会再看看。 无论如何看看我以前的问题,我也在苦苦挣扎:

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

希望这有点帮助。