具有 OnItemClickListener 的 ListView

我使用一个自定义 ListViewRatingBarImageButton。这是我的问题: 当我点击我的 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();
}
});
246641 次浏览

1)检查您是否正在使用 OnItemClickListener 或 OnClickListener (ListView 不支持这种方式)
文档 Android 开发人员列表视图

2)检查您是否正确地将监听器添加到您的 ListView 中。它挂在 ListView 上,而不是挂在 ListAdapter 上!

ListView.setOnItemClickListener(listener);

3)如果您需要使用 OnClickListener,请检查您是否使用了 DialogInterface.OnClickListenerView.OnClickListener(如果没有验证或同时使用它们,则可以很容易地交换它们)

SetClickable 为 false to ImageButton,如下所示

imagebutton.setClickable(false);

然后对 listview 执行 OnItemClickListener

列表视图中是否存在您正在使用的 > 然后点击以下连结: Http://vikaskanani.wordpress.com/2011/07/20/android-custom-image-gallery-with-checkbox-in-grid-to-select-multiple/

我认为,当你工作的链接,我已经提供了第一个一切都会很好的工作,我已经尝试了。如果你想要一个精确的答案,请用代码和描述来详细说明这个问题。

嘿,看看这个,对我有用... 希望对你也有用

如果列表项包含 ImageButton

问题: OnItemClickListener根本没有任何回应!

理由: 不知道

解决方案: 在代码中,将 ImageButton的焦点设置为 “false”

1: ImageButton button = (ImageButton) convertView.findViewById(R.id.imageButton);

2: button.setFocusable(false);

如果要在列表视图中使用 启用项目单击

listitem.setClickable(false);

乍一看,这似乎是错误的,但它的工作!

虽然这是一个很老的问题,但是我仍然会对它发布一个答案,以便它可以帮助一些人。 如果在列表视图中使用任何布局,请使用..。

android:descendantFocusability="blocksDescendants"

... 在列表中的第一个父布局上。这就像魔术一样,单击不会被列表中的任何元素消耗,而是直接进入列表项。

我有一个扩展 ListActivity 的 Activity。

我在 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!");


}

如果列表项视图包含按钮、复选框或图像按钮, Onitemclicklisten 和 onitemlongclicklisten 无法工作,因为它有自己的 onclick 侦听器。

设置可定焦为假

holder.button.setFocusable(false);

如果以编程方式定义 ListView:

mListView.setDescendantFocusability(ListView.FOCUS_BLOCK_DESCENDANTS);
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();
}
};

只要将这行插入到 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


}
} );

您还可以使用 lambda.Lambda 语法,Java 1.7或更早的 JVM 不支持这种语法。

listView.setOnItemClickListener((parent, view, position, id) -> {
...
});

就像其他人说的那样,用 Java

listitem.setClickable(false);

或者在 xml 中:

android:clickable="false"

非常好用

Android OnItemClickListener 与 Adapter 中列表视图行的项的 OnClickListener 冲突。您只需要确保您的代码得到了良好的管理,并且使用标准正确地编写了代码。

你可在以下连结找到答案:

让列表可点击

我能提供的最简单的解决方案是这样的。你只需要做这两个步骤。

将其添加到 XML 文件中。

    <ListView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:id="@+id/list_view"
android:layout_below="@+id/info_text"
/>

  1. 将其添加到 MainActivity 文件中。

        ListView listView;
listView = findViewById(R.id.list_view);


String[] fruits = new String[5];
fruits[0]="hello";
fruits[1]="hello";
fruits[2]="hello";
fruits[3]="hello";
fruits[4]="hello";


List newList = new ArrayList(Arrays.asList(fruits));
ArrayAdapter arrayAdapter = new ArrayAdapter(this, android.R.layout.simple_list_item_1, newList);
listView.setAdapter(arrayAdapter);


listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView parent, View view, int position, long id) {
String selectedItem = (String) parent.getItemAtPosition(position);
Toast.makeText(DisplayPannel.this, selectedItem, Toast.LENGTH_SHORT).show();            }
});

许多人问,列表中的子元素必须具有宽度 没有“ match _ father”,如果您只是在寻找列表视图单击。

即使你将“可聚焦”设置为假,它也不会起作用。 将子级的 Width 设置为 wrash _ content

<TextView
android:id="@+id/itemchild"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...