как получить идентификатор DB только после нажатия кнопки imageButton в элементе listView с kotlin

У меня есть класс customAdapter и listView. Я сделал макет single_row с 3 текстовыми изображениями и одним imageButton. теперь мой вопрос заключается в том, как я могу получить поле идентификатора БД, только от щелчка на кнопке imageButton и игнорирования кликов по всей строке? Я знаю, что могу получить идентификатор:

mListView.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, position, id -> view.delete.setOnClickListener(){ Toast.makeText(context,""+id,Toast.LENGTH_SHORT).show() } 

но это работает, только если я нажму на всю строку. Я пробовал android:descendantFocusability="blocksDescendants" в корне xml и android:focusable="false" в узле imageButton, а imageButton не распознается в любом случае, пока вся строка распознана. только если я использую button.onClickListener()... щелчок распознается. но таким образом я не знаю, как получить идентификатор.

мой код класса адаптера:

 class MyAdapter(activity: Activity, context: Context, cursor: Cursor) : CursorAdapter(context, cursor, true) { var inflater: LayoutInflater lateinit var mListView: ListView init { this.inflater = LayoutInflater.from(context) mListView = activity.listView } override fun newView(context: Context?, cursor: Cursor?, parent: ViewGroup?): View { val view = LayoutInflater.from(context).inflate(R.layout.single_row, parent, false) return view; } override fun bindView(view: View, context: Context, cursor: Cursor) { val latitude = view.findViewById(R.id.latitude) as TextView val longtitude = view.findViewById(R.id.longtitude) as TextView val date = view.findViewById(R.id.date) as TextView val asu = view.findViewById(R.id.asu) as TextView latitude.setText(cursor.getString(cursor.getColumnIndex(Constants.Signal.LATITUDE))) longtitude.setText(cursor.getString(cursor.getColumnIndex(Constants.Signal.LONGTITUDE))) date.setText(cursor.getString(cursor.getColumnIndex(Constants.Signal.DATE))) asu.setText(cursor.getString(cursor.getColumnIndex(Constants.Signal.ASU))) } } 

мой макет single_row:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="horizontal" android:layout_width="match_parent" android:id="@+id/list_item" android:layout_height="match_parent" android:descendantFocusability="blocksDescendants"> <TextView android:id="@+id/latitude" android:layout_width="23dp" android:layout_height="53dp" android:layout_weight="0.20" android:text="latitude" android:gravity="center" /> <TextView android:id="@+id/longtitude" android:layout_width="23dp" android:layout_height="53dp" android:layout_weight="0.20" android:text="longtitude" android:gravity="center" /> <TextView android:id="@+id/date" android:layout_width="23dp" android:layout_height="53dp" android:layout_weight="0.20" android:gravity="center" android:text="date" /> <TextView android:id="@+id/asu" android:layout_width="23dp" android:layout_height="53dp" android:layout_weight="0.20" android:gravity="center" android:focusable="false" android:text="asu"/> <ImageButton android:id="@+id/delete" android:layout_width="0.23dp" android:layout_height="53dp" android:layout_weight="0.20" android:focusable="false" android:src="@android:drawable/ic_menu_delete" /> </LinearLayout> 

Вы используете адаптер курсора, вы должны использовать ArrayAdapter. Вот почему custom-cursoradapter-and-why-not-use и пример ArrayAdapter