【问题标题】:OnItemClickListener not called with custom layout row in ListView未使用 ListView 中的自定义布局行调用 OnItemClickListener
【发布时间】:2017-01-05 22:49:52
【问题描述】:

我有这样的问题。我正在尝试获取 ListView 中的行 ID。为此,我使用setOnItemClickListener:

wyswietlenieZadan = (ListView)findViewById(R.id.ListView);
mAdapter = new ArrayAdapter<>(this, R.layout.zadania, R.id.opisZadania, listaZadan);
wyswietlenieZadan.setAdapter(mAdapter);
wyswietlenieZadan.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Toast.makeText(getApplicationContext(), "Twoje id: " +id, Toast.LENGTH_SHORT).show();
    }
});

这是我的zadania.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_gravity="center_vertical">

    <TextView
        android:id="@+id/opisZadania"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello"
        android:textSize="20sp"
        android:layout_marginStart="32dp"
        android:layout_alignParentStart="true"
        android:layout_marginTop="12dp"
        android:clickable="true"
        android:contextClickable="true" />

    <ImageButton
        android:layout_width="wrap_content"
        app:srcCompat="@android:drawable/ic_menu_close_clear_cancel"
        android:id="@+id/task"
        android:layout_marginEnd="19dp"
        android:layout_height="wrap_content"
        style="@android:style/Widget.ImageButton"
        android:background="@android:drawable/ic_delete"
        android:onClick="usunZadanie"
        android:layout_alignTop="@+id/opisZadania"
        android:layout_alignParentEnd="true"
        android:focusable="false" />

    <ImageView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:srcCompat="@android:drawable/ic_menu_edit"
        android:id="@+id/imageView"
        android:layout_toStartOf="@+id/task"
        android:layout_alignTop="@+id/task"
        android:onClick="edytujZadanie"
        android:focusable="false" />

</RelativeLayout>

它不起作用,但是当我使用 simple_list_item_1.xml 而不是 zadania.xml 作为布局时,我可以获得每条记录的 id。有人知道为什么它不适用于我的自定义布局吗?

【问题讨论】:

  • 为什么要使用simple_list_item_1.xml
  • 我不想使用 simple_list_item_1。但是有了这个 SetOnItemClicklistener 工作正常。

标签: android android-layout listview android-studio


【解决方案1】:

变化:

Toast.makeText(getApplicationContext(), "Twoje id: " +id, Toast.LENGTH_SHORT).show();

到:

Toast.makeText(getApplicationContext(), "Twoje id: " +position, Toast.LENGTH_SHORT).show();

因为位置变量为您提供刚刚单击的项目的位置。如果您单击第一项,它将显示 Twoje id:0,如果您单击第二项,它将显示 Twoje id:1,依此类推...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多