Android ListView:如何选择项目?

Android ListView:如何选择项目?,第1张

概述我在使用我创建的ListView时遇到问题:我想在单击它时选择一个项目.我的代码如下:protectedvoidonResume(){...ListViewlv=getListView();lv.setOnItemSelectedListener(newOnItemSelectedListener(){publicvoidonItemSelected(AdapterView<?>adapterView,Vi

我在使用我创建的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()仍然产生-1为setSelection(1)-call.

我错过了什么?

迈克尔

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

解决方法:

这里缺少的元素是choiceMode.这不是很好documented,但是默认情况下,AndroID中的ListVIEws(以及扩展名,任何继承自AbsListVIEw的内容,如GrIDVIEw等)不允许选择,但它可以在XML或代码中启用:

在XML中:

<ListVIEw  ...  androID:choiceMode="singleChoice" />

码:

mListVIEw.setChoiceMode(AbsListVIEw.CHOICE_MODE_SINGLE);

请注意,一旦你这样做,androID会为你设置setSelection(),所以你不需要自己跟踪它.那时你的onClickListener只是用于保存选择,我甚至不打扰OnSelectedItemListener:

@OverrIDepublic 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}
总结

以上是内存溢出为你收集整理的Android ListView:如何选择项目?全部内容,希望文章能够帮你解决Android ListView:如何选择项目?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116359.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存