ListView与OnItemClickListener android

我正在使用RatingBarImageButton的自定义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.OnClickListenerView.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理得很好,并用标准写好。

在下面的链接中检查答案:

让列表可点击