如何在ListView的每个项目中创建独特的按钮?

时间:2014-04-05 16:18:47

标签: android sqlite listview edit onclicklistener

在我的列表视图中,我需要每个项目都有一个按钮图标,该按钮图标根据选择按钮的项目明显有效。该视图显示来自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>

_ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _ - _

如何以编程方式实现侦听器,以便识别已选择的项目?

2 个答案:

答案 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。然后列表监听器安静相同