我正在尝试在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
答案 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)
我目前没有太多时间。所以今晚我会再看看。 无论如何看看我以前的问题,我也在苦苦挣扎:
如果您的解决方案不在那里(我认为它在第一个),我们将需要更多代码,以帮助您。
希望这有点帮助。