[英]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.