我使用一个ListView是设置这样的:

<ListView android:id="@android:id/list" android:layout_width="fill_parent"
    android:layout_height="fill_parent" android:longClickable="false"
    android:choiceMode="singleChoice">
</ListView>

在我的代码添加一个OnItemSelectedListener到ListView这样的:

getListView().setAdapter(adapter);
getListView().setOnItemSelectedListener(this);

我的活动实现监听器等是:

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
    Log.d("Tag", "ListItemSelected: Parent: " + parent.toString() + " View: "
            + view.toString() + " Position: " + " Id: " + id);
}

我的希望是,我会看到这个调试输出我点击列表中的东西的那一刻。但调试输出永远不会在logcat中所示。

有帮助吗?

解决方案

OnItemSelectedListener 侦听列表项选择和不列表项的点击。

在这种情况下的选择可以看作是与设备的触控板在此选项移动焦点。

要得到想要的行为,必须使用 OnItemClickListener

其他提示

这是因为你刚好与启用触摸的设备上你的手指来测试。在触摸模式,没有重点,没有选择。的用户界面,需要选择应使用不同类型的窗口小部件的,如单选按钮。

首先,你应该设置ChoiceMode,然后, ListView中,不会有因为setOnItemSelectedListenerAdapterView临时用户接受选择的事件,并在方法handleDataChanged()回调,但类AbsListView覆盖此方法,永不回调OnItemSelectedListener

“在这里输入的图像描述”

可以通过在setOnItemClickListener这种方法得到seletedItem

     mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            Log.e("TAG", "onItemClick: " + position);
            SparseBooleanArray positions = mListView.getCheckedItemPositions();
            Log.e("TAG", "onItemSelected: " + positions.toString());

        }
    });
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top