[英]OnItemClickListener not called with custom layout row in ListView
我有這樣的問題。 我試圖在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。 有人知道為什么它不適用於我的自定義布局嗎?
更改:
Toast.makeText(getApplicationContext(), "Twoje id: " +id, Toast.LENGTH_SHORT).show();
至:
Toast.makeText(getApplicationContext(), "Twoje id: " +position, Toast.LENGTH_SHORT).show();
因為position變量為您提供了您單擊的項目的位置。 如果單擊第一個項目,它將顯示Twoje id:0;如果單擊第二個項目,則將顯示Twoje id:1,依此類推...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.