我已经创建了自定义ListView适配器。在getView
中,我有另一种覆盖方法onClick
。我的问题是如何知道ListView中的哪个按钮被点击了?如何知道在ListView中单击了哪个按钮
item_category
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/specialCatItemName"
android:textColor="#000"
android:layout_alignParentTop="true"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true" />
<Button
android:text="View"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnSpecialView"
android:textAllCaps="false"
android:padding="3dp"
android:background="#CCBA56"
android:textColor="#fff"
android:minHeight="40dp"
android:layout_alignBaseline="@+id/btnSpecialImages"
android:layout_alignBottom="@+id/btnSpecialImages"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginBottom="15dp"/>
<Button
android:text="Images"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btnSpecialImages"
android:textAllCaps="false"
android:paddingTop="2dp"
android:paddingRight="2dp"
android:paddingBottom="2dp"
android:paddingLeft="2dp"
android:background="#011E4D"
android:textColor="#fff"
android:minHeight="40dp"
android:layout_marginTop="11dp"
android:layout_below="@+id/specialCatItemName"
android:layout_toRightOf="@+id/btnSpecialView"
android:layout_toEndOf="@+id/btnSpecialView"
android:layout_marginLeft="10dp"
android:layout_marginStart="10dp"
android:layout_marginBottom="15dp"/>
</RelativeLayout>
光标适配器
class categoryCursorAdaptor extends BaseAdapter {
Context context;
String[] data;
private static LayoutInflater inflater = null;
int gPosition;
String row;
public categoryCursorAdaptor(Context context, String[] data) {
this.context = context;
this.data = data;
inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
}
@Override
public int getCount() {
return data.length;
}
@Override
public Object getItem(int position) {
return data[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
this.gPosition = position;
this.row = data[position];
if (vi == null) vi = inflater.inflate(R.layout.item_category, null);
TextView text = (TextView) vi.findViewById(R.id.specialCatItemName);
text.setText(data[position]);
Button Button1= (Button) vi.findViewById(R.id.btnSpecialView);
Button1.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View view) {
//How do I know which button is got clicked?
}
});
return vi;
}
}
第一个。 Button1 var你已经从一个ID为btnSpecialView的视图的引用。如果你想要两个按钮,你需要使用2个变量。添加:'按钮Button2 =(按钮)vi.findViewById(R.id。btnSpecialImages);'所以你可以访问第二个按钮点击 –
位置变量告诉你发生点击的项目编号。 – rhari