为什么Listview.getCheckedItemPositions在onItemLongClickListener中返回空?

时间:2013-11-26 08:55:58

标签: android android-listview

我用它来突出显示列表视图的当前所选元素:

list.setItemChecked(pos,list.getCheckedItemPositions().get(pos));

当我将该代码放入onItemClickListener时,它可以工作,但是当我将它放入onItemLongClickListener时,它不起作用,因为list.getCheckedItemPositions()返回一个空数组。

在我的xml中我定义了listview:

<ListView
    android:id="@+id/list"
    android:layout_width="wrap_content"
    android:layout_height="248dp"
    android:choiceMode="singleChoice"
    android:longClickable="true" >
</ListView>

并且我使用自定义drawable(选择器)作为项目布局的背景,因此当我正常点击某个项目时,背景会变为“激活”状态,但是当我进行长按时它不起作用。

list.setOnItemClickListener(new OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> arg0, View arg1, int pos, long id) {
            list.setItemChecked(pos,list.getCheckedItemPositions().get(pos));
    });

list.setOnItemLongClickListener(new OnItemLongClickListener() {

        @Override
public boolean onItemLongClick(AdapterView<?> arg0, View v, final int pos, long id) {
            list.setItemChecked(pos,list.getCheckedItemPositions().get(pos));
});

0 个答案:

没有答案