在我的列表视图中,我需要每个项目都有一个按钮图标,该按钮图标根据选择按钮的项目明显有效。该视图显示来自ArrayLists(从SQLite数据库填充)的值,每个项目都有不同的值。该按钮本质上是一个编辑选项,每个项目都有 ,因此当按下编辑按钮时,只会检索该项目的值。
这里是每个项目的XML:
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/list_item_header" >
<TextView
android:id="@+id/list_item_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_gravity="top"
android:layout_marginLeft="40dp"
android:gravity="right"
android:textColor="#000000"
android:textSize="20sp" />
<TextView
android:id="@+id/list_item_values"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_toRightOf="@id/list_item_info"
android:gravity="left"
android:textColor="#000000"
android:textSize="20sp" />
<TextView
android:id="@+id/list_item_num"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_gravity="right"
android:layout_marginRight="20dp"
android:textSize="40sp" />
<ImageButton
android:id="@+id/button_edit"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_centerVertical="true"
android:layout_marginRight="30dp"
android:layout_toLeftOf="@+id/list_item_num"
android:adjustViewBounds="true"
android:contentDescription="@string/edit_button_description"
android:scaleType="fitCenter"
android:src="@drawable/editing_icon" />
</RelativeLayout>
_ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _
如何以编程方式实现侦听器,以便识别已选择的项目?
答案 0 :(得分:0)
您需要实现自己的列表适配器并将按钮设置为onClick侦听器。
另一种方法是禁用(clickable = false)按钮并将onItemClick监听器设置为listview,并通过position参数决定做什么 - 这里你将松开按钮的按下状态,你的整个项目视图基本上可点击。
答案 1 :(得分:0)
您需要一个onItemClickListener。如果使用此方法,则可以获取后面的对象。
以下是此类onItemClickListener
的示例 list.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
YourItem item = (YourItem) list.getAdapter().getItem(position);
...
由于你有这个项目,你可以做任何你想做的事。也许开始一个新的片段/活动并通过意图发送对象,以便使用它。
为此你需要实现像BaseAdapter
这样的listadapter,它必须设置为listView。
修改强>
当然你也可以使用CursorAdapter
。然后列表监听器安静相同