3 回答

TA貢獻1785條經驗 獲得超4個贊
我想建議為您創建一個自定義適配器,ListView它將為您的按鈕提供一個onClick功能,并且根據該項目在您的 中的位置,您可以在您的功能ListView中實現不同的操作。onClick因此,我想推薦一個如下所示的適配器。
public class ListAdapter extends ArrayAdapter<Item> {
private int resourceLayout;
private Context mContext;
private ArrayList<Contact> contacts;
public ListAdapter(Context context, int resource, ArrayList<Contact> contacts) {
super(context, resource, items);
this.resourceLayout = resource;
this.mContext = context;
this.contacts = contacts;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = convertView;
if (v == null) {
LayoutInflater vi;
vi = LayoutInflater.from(mContext);
v = vi.inflate(resourceLayout, null);
}
Item p = getItem(position);
if (p != null) {
Button btn = (TextView) v.findViewById(R.id.button1);
if (btn != null) {
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(position == 1) implementSomethingFor1();
else if (position == 2) implementSomethingFor2();
// ... Define the other implementations
}
});
}
}
return v;
}
}
然后像下面這樣使用適配器。
ListView lv = (ListView) findViewById(R.id.list);
ListAdapter customAdapter = new ListAdapter(this, R.layout.list_item, contactList);
lv.setAdapter(customAdapter);
請注意,這不是一個確切的實現。您應該修改您的自定義適配器,使其符合您的目的。

TA貢獻1936條經驗 獲得超7個贊
嘗試 lv.setonitemclicklistenter,這將創建一個允許您單擊每個項目的方法,您可以在該方法中編寫例如 Toast 消息,這樣當您單擊一個項目時,將彈出一個 Toast 消息。

TA貢獻1876條經驗 獲得超7個贊
您有幾種選擇:
檢查
view
參數以確定要做什么。您可以在每個按鈕上使用getTag()
和setTag()
提供自定義數據。通過擴展創建自定義適配器
SimpleAdapter
。覆蓋 createView() 和 bindView() 以便為每個按鈕提供自定義行為,例如向每個按鈕添加不同的 OnClickListener 對象OnItemClickListener
為設置ListView
。這提供了一個參數,用于單擊列表視圖中的位置。您可以使用它來確定要做什么或將哪些數據傳遞給新活動。您可能希望使用getItem()
適配器來獲取當前行的數據。
添加回答
舉報