簡體   English   中英

如何在ListView的每個項目中制作具有唯一作用的按鈕?

[英]How to make uniquely acting buttons within each item of ListView?

在我的列表視圖中,我需要每個項目都有一個按鈕圖標,該圖標根據選擇該按鈕的項目的不同而不同。該視圖顯示的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>

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

如何以編程方式實現偵聽器,以便可以識別選擇了哪個項目?

您需要實現自己的列表適配器,並將按鈕設置為onClick偵聽器。

另一種方法是禁用(clickable = false)按鈕,並將onItemClick偵聽器設置為listview,然后由position參數決定要執行的操作-在這里,您將松開按鈕的按下狀態,並且整個項目視圖基本上都是可單擊的。

您需要一個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 ,必須將其設置為listView。

編輯:當然,您也可以使用CursorAdapter 然后列表偵聽器是相同的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM