Android 自定义ListView-单击列表中的按钮时获取项目id
我有一个自定义的ListView,里面有一个按钮,当我单击这个按钮时,不会调用onItemClickListener(),而是调用按钮的onClick()方法。Android 自定义ListView-单击列表中的按钮时获取项目id,android,android-listview,Android,Android Listview,我有一个自定义的ListView,里面有一个按钮,当我单击这个按钮时,不会调用onItemClickListener(),而是调用按钮的onClick()方法。 我想要实现的是获取我单击的按钮所在的列表项的id(我需要这个id从数据库中删除正确的条目) 这是我的适配器: sa = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.list_mission, new String
我想要实现的是获取我单击的按钮所在的列表项的id(我需要这个id从数据库中删除正确的条目) 这是我的适配器:
sa = new SimpleAdapter (this.getBaseContext(), listItem, R.layout.list_mission,
new String[] {"marque", "date"}, new int[] {R.id.list_vehicule, R.id.list_date});
谢谢大家! 您可以使用
setTag
例如:在项目\u 0中有一个按钮\u 0
在getView
中:
button_0.setTag(position)
在您的onClick中
您可以通过
v.getTag()
获得该位置。您可以使用接口来实现这一点。按如下方式创建自定义类:
public interface MyCustomClickListener{
public void onMyClickListener(int id){}
}
private MyCustomClickListener mMyClickListener;
public MyAdapter(Activity activity){
try {
mMyClickListener = (MyCustomClickListener) activity;
} catch(ClassCastException e){
throw new ClassCastException(activity + " must implements MyCustomClickListener");
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
Button mMyBtn = // initialise Button
mMyBtn.setOnClickListener(new View.OnClickListener){
@Override
public void onClick(View view){
mMyClickListener.onMyClickListener(position);
}
};
}
在自定义适配器中,您可以像这样使用此接口
:
public interface MyCustomClickListener{
public void onMyClickListener(int id){}
}
private MyCustomClickListener mMyClickListener;
public MyAdapter(Activity activity){
try {
mMyClickListener = (MyCustomClickListener) activity;
} catch(ClassCastException e){
throw new ClassCastException(activity + " must implements MyCustomClickListener");
}
}
@Override
public View getView(int position, View convertView, ViewGroup parent){
Button mMyBtn = // initialise Button
mMyBtn.setOnClickListener(new View.OnClickListener){
@Override
public void onClick(View view){
mMyClickListener.onMyClickListener(position);
}
};
}
在您的活动中
:
public class MyActivity extends Activity implements MyCustomClickListener{
@Override
public void onMyClickListener(int id){
// your id
}
}
这应该是一种魅力!:) 发布您的自定义适配器。@bumblebeez通过将“假”设置为“假”来检查我的答案您将能够单击OnitemClick以及按钮单击侦听器…您所说的“在您的自定义适配器中”是什么意思?您的ListView适配器。我使用simpleadapter的唯一时刻是我在问题中发布的两行,我真的不明白我该如何使用你代码的这一部分!对不起,我对android开发非常陌生。要使用这种方法,您应该创建一个自定义适配器。以下是一些如何实现这一点的示例: