gpt4 book ai didi

安卓 ListView : how to select an item?

转载 作者:太空宇宙 更新时间:2023-11-03 11:45:03 25 4
gpt4 key购买 nike

我在使用我创建的 ListView 时遇到了问题:我希望在单击某个项目时选中它。

我的代码如下:

protected void onResume() {
...
ListView lv = getListView();
lv.setOnItemSelectedListener(new OnItemSelectedListener()
{
public void onItemSelected(AdapterView<?> adapterView, View view, int pos, long id) {
Log.v(TAG, "onItemSelected(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
public void onNothingSelected(AdapterView<?> adapterView) {
Log.v(TAG, "onNothingSelected(...) => selected: " + getSelectedItemPosition());
}
});
lv.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> adapterView, View view, int pos, long id) {
lv.setSelection(pos);
Log.v(TAG, "onItemClick(..., " + pos + ",...) => selected: " + getSelectedItemPosition());
}
});
...
}

当我运行它并点击例如在第二项(即 pos=1)上,我得到:

04-03 23:08:36.994: V/DisplayLists(663): onItemClick(..., 1,...) => selected: -1

即即使使用正确的参数调用 OnItemClickListener 并调用 setSelection(1),也没有选择任何项目(因此也永远不会调用 OnItemSelectedListener.onItemSelected(...))并且 getSelectedItemPosition() 在 setSelection 之后仍然产生 -1 (1)-调用。

我错过了什么?

迈克尔

PS.: 我的列表确实有 >=2 个元素...

最佳答案

此处缺少的元素是 choiceMode。这不是很好documented , 但默认情况下,android 中的 ListViews(以及从 AbsListView 继承的任何东西,如 GridView 等)不允许选择,但可以启用它 - 无论是在 XML 中还是在代码中:

在 XML 中:

<ListView
...
android:choiceMode="singleChoice" />

代码:

mListView.setChoiceMode(AbsListView.CHOICE_MODE_SINGLE);

请注意,一旦您执行此操作,android 将为您setSelection(),因此您无需自己跟踪它。那时你的 onClickListener 只是为了保存选择,我什至不理会 OnSelectedItemListener :

@Override
public void onItemClick(final AdapterView<?> list, final View v,
final int position, final long id) {
Participant p = mAdapter.getParticipantForId(id);
eventManager.fire(new ParticipantSelectedEvent(p));
pxList.smoothScrollToPosition(position); // Make sure selection is plainly visible
}

关于安卓 ListView : how to select an item?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10002839/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com