【发布时间】:2017-12-08 14:23:39
【问题描述】:
我有一个 customAdapter 类和一个 listView。我用 3 个文本视图和一个图像按钮制作了单行布局。 现在我的问题是我如何才能获得 DB id 字段,仅通过单击 imageButton 并忽略对整行的单击? 我知道我可以通过以下方式获取 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)))
}
}
我的单行布局:
<?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>
【问题讨论】:
标签: android sqlite listview kotlin