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条经验 获得超6个赞
尝试 lv.setonitemclicklistenter,这将创建一个允许您单击每个项目的方法,您可以在该方法中编写例如 Toast 消息,这样当您单击一个项目时,将弹出一个 Toast 消息。

TA贡献1876条经验 获得超7个赞
您有几种选择:
检查
view
参数以确定要做什么。您可以在每个按钮上使用getTag()
和setTag()
提供自定义数据。通过扩展创建自定义适配器
SimpleAdapter
。覆盖 createView() 和 bindView() 以便为每个按钮提供自定义行为,例如向每个按钮添加不同的 OnClickListener 对象OnItemClickListener
为设置ListView
。这提供了一个参数,用于单击列表视图中的位置。您可以使用它来确定要做什么或将哪些数据传递给新活动。您可能希望使用getItem()
适配器来获取当前行的数据。
添加回答
举报