2011-01-26 55 views
3

我想在ListView中设置在OnItemClick事件中选择的项目,它只是不会离开项目选择。我究竟做错了什么?Android - setSelected在OnItemClick在ListView

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()并通过膨胀xml设置行的布局。

回答

0

我目前没有太多时间。所以我今天晚些时候再看看。 反正看看我以前的问题,我用同样的挣扎:

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

希望这会有所帮助。

+0

谢谢我看到第一篇文章有​​一些不同的代码,并且我遇到了与物品跳转相同的问题。那是什么?我现在要试试这个方法。 – dropsOfJupiter 2011-01-26 17:37:16

+0

@dropsOfJupiter好的,试试,万一你有问题告诉我! – Beasly 2011-01-26 18:02:51

0

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

我看到你有你自己的自定义适配器,我猜测这意味着你将自定义视图膨胀为行。如果你的行有更多的东西,然后checkedtextview我不认为你将能够正确使用setSelections。

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

+0

谢谢,我已经在某处看到了checkedtextview实现,并会尝试它,尽管我需要一些代码。你甚至可以用OnTouchEvent来做到这一点,它似乎是一个矫枉过正的事情。不应该有一些非常简单的东西吗? :) BTW checkedtextview是一个控件或XML文件?我有我自己的xml文件,其中包含4到6个控件,它们都根据对象返回的内容动态地打开/关闭。它不只是纯粹的TextView。很多东西都在适配器中完成getView() – dropsOfJupiter 2011-01-26 17:41:14

5

我能设法得到一个ListView的项目作为选择要设置时长点击:

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

它只是工作,我叫requestFocusFromTouch()后。