ListView与OnItemClickListener android
我正在使用RatingBar
和ImageButton
的自定义ListView
。 这是我的问题:当我点击我的ListView
,我的OnItemClickListener
不起作用。 请任何人都可以帮助我。 码:
ListView lv = getListView(); setContentView(lv); lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1,int position, long arg3) { Toast.makeText(SuggestionActivity.this, "" + position, Toast.LENGTH_SHORT).show(); } });
提前致谢!
虽然是一个很老的问题,但我仍然发表一个答案,以便它可以帮助一个人。 如果您在列表视图中使用任何布局,然后使用…
android:descendantFocusability="blocksDescendants"
…列表中的第一个父布局。 这种方式很有效,点击不会被列表中的任何元素所占用,而是直接进入列表项。
嘿检查这个,为我工作…希望它也适用于你
如果列表项包含ImageButton
问题: OnItemClickListener
根本没有任何OnItemClickListener
!
原因:不知道
解决scheme:在代码中,将ImageButton
的焦点设置为“false”
1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);
2: button.setFocusable(false);
我有一个扩展ListActivity的活动。
我尝试在onCreate中做这样的事情:
ListView listView = getListView(); listView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Log.i("Hello!", "Y u no see me?"); } });
但是这没有用。
相反,我只需要重写onListItemClick:
@Override protected void onListItemClick(ListView l, View v, int position, long id) { Log.i("Hello!", "Clicked! YAY!"); }
如果列表项目视图包含button或checkbox或图像button,onitemclicklistener和onsitemLongclicklistener不工作,因为它有自己的onclick监听器。
将焦点设置为假
holder.button.setFocusable(false);
如果你想启用项目点击列表视图使用
listitem.setClickable(false);
这可能看起来错了,但它的工作原理!
1)检查您是否使用OnItemClickListener或OnClickListener(ListView不支持)
文档Android开发人员ListView
2)检查你是否将Listener正确添加到ListView中。 它挂在ListView上而不是ListAdapter!
ListView.setOnItemClickListener(listener);
3)如果您需要使用OnClickListener,请检查您是否使用DialogInterface.OnClickListener
或View.OnClickListener
(如果未经validation,或者如果同时使用它们,则可以轻松交换)
如果您以编程方式定义您的ListView:
mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
像这样setClickable为false到ImageButton
imagebutton.setClickable(false);
然后执行OnItemClickListener
到列表视图。
listPaired = (ListView) findViewById(R.id.listView1); listPairedData = new ArrayList<String>(); araPaired = new ArrayAdapter(this, android.R.layout.simple_list_item_1, listPairedData); listPaired.setAdapter(araPaired); listPaired.setOnItemClickListener(listPairedClickItem); private OnItemClickListener listPairedClickItem = new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) { String info = ((TextView) arg1).getText().toString(); Toast.makeText(getBaseContext(), "Item "+info, Toast.LENGTH_LONG).show(); } };
您也可以使用“lambda”,Java 1.7或更低版本的JVM不支持Lambda语法。
listView.setOnItemClickListener((parent, view, position, id) -> { });
在Java中,如其他build议
listitem.setClickable(false);
或者在xml中:
android:clickable="false"
它工作得很好
是否有列表视图中的图像,你正在使用>然后按照链接: http : //vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-到select-多个/
我想,当你在我提供的链接上工作的时候,每一件事情都能正常工作,我试过了。 如果你想要一个精致的答案,请详细说明问题的代码和说明。
只需将行插入RatingBar:
android:isIndicator="true"
在XML中,评分栏看起来像这样。
<RatingBar android:id="@+id/ratingBar" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="6dp" android:isIndicator="true" android:clickable="false" android:focusable="false" android:focusableInTouchMode="false" />
lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub } });
Android OnItemClickLIstener与Adapter中的listview行项目的OnClickListener发生冲突。 你只需要确保你的代码pipe理得很好,并用标准写好。
在下面的链接中检查答案:
让列表可点击