私はcustomAdapterクラスとlistViewを持っています。私は3つのtextviewと1つのimageButtonでsingle_rowレイアウトを作った。 今私の質問は、imageButtonをクリックし、行全体のクリックを無視するだけで、DBのidフィールドを取得する方法はありますか? 私は私がしてIDを取得することができます知っている:kotlinでlistViewアイテムのimageButtonをクリックした後でDB idを取得する方法
mListView.onItemClickListener = AdapterView.OnItemClickListener { adapterView, view, position, id ->
view.delete.setOnClickListener(){
Toast.makeText(context,""+id,Toast.LENGTH_SHORT).show()
}
が、これは私が全体の行をクリックした場合にのみ働いています。 xmlのルートにandroid:descendantFocusability="blocksDescendants"
を入れてみましたが、imageButtonノードでandroid:focusable="false"
としましたが、行全体が認識されている間はimageButtonは認識されません。私が使用している場合のみbutton.onClickListener()...
クリックが認識されます。しかし、そのように私はIDを取得する方法を知らない。
私のアダプタクラスコード:
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>