ListView 的 CustomAdapter 中的复选框
CheckBox in CustomAdapter for ListView
我有一个带有自定义适配器的 ListView
。现在我向每个元素添加了一个 CheckBox 以获得 "multiple check listview" 但使用以下代码:
import java.util.ArrayList;
class CustomListAdapter extends ArrayAdapter<String> {
String doubleTab = "\t\t";
CheckBox elementChecker;
ArrayList<Boolean> isChecked;
ArrayList<Integer> checkedPositions = new ArrayList<Integer>();
public CustomListAdapter(Context context, String[] dataListFinal) {
super(context, R.layout.list_item_datalist ,dataListFinal);
}
public String allElementsAdapter = "";
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater iteminflater = LayoutInflater.from(getContext());
View customView = iteminflater.inflate(R.layout.list_item_datalist, parent, false);
ImageView image = (ImageView) customView.findViewById(R.id.list_icon_product);
TextView textViewlabel = (TextView) customView.findViewById(R.id.list_item_datalist_label_textview);
TextView textViewdetails1 = (TextView) customView.findViewById(R.id.list_item_datalist_textview_details_1);
elementChecker = (CheckBox) customView.findViewById(R.id.checkBox_Item);
String singleListItem = getItem(position);
String[] singleListItemArray = singleListItem.split("\t");
String id = singleListItemArray[0];
String product = singleListItemArray[1];
String label = singleListItemArray[2];
allElementsAdapter = product + label + serial + mac + daaid + bill;
switch (product) {
case "Pc":
image.setImageResource(R.drawable.icon_pc_circle);
break;
case "Laptop":
image.setImageResource(R.drawable.icon_laptop_circle);
break;
}
String details1 = product;
textViewlabel.setText(label);
textViewdetails1.setText(details1);
elementChecker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (elementChecker.isChecked()){
Log.d("SELECTED", "yes");
}else {
Log.d("SELECTED", "no");
}
}
});
return customView;
}
public String getAllElements(){
return allElementsAdapter;
}
}
OnClickListener
只看最后一个条目。有人可以帮我解释一下我必须做什么吗?
您必须在 getView
中声明 CheckBox elementChecker;
你总是覆盖你的 elementChecker
Checkbox elementChecker = (CheckBox) customView.findViewById(R.id.checkBox_Item);
将是一个解决方案。但是您必须将复选框的状态保存在某处...
我有一个带有自定义适配器的 ListView
。现在我向每个元素添加了一个 CheckBox 以获得 "multiple check listview" 但使用以下代码:
import java.util.ArrayList;
class CustomListAdapter extends ArrayAdapter<String> {
String doubleTab = "\t\t";
CheckBox elementChecker;
ArrayList<Boolean> isChecked;
ArrayList<Integer> checkedPositions = new ArrayList<Integer>();
public CustomListAdapter(Context context, String[] dataListFinal) {
super(context, R.layout.list_item_datalist ,dataListFinal);
}
public String allElementsAdapter = "";
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
LayoutInflater iteminflater = LayoutInflater.from(getContext());
View customView = iteminflater.inflate(R.layout.list_item_datalist, parent, false);
ImageView image = (ImageView) customView.findViewById(R.id.list_icon_product);
TextView textViewlabel = (TextView) customView.findViewById(R.id.list_item_datalist_label_textview);
TextView textViewdetails1 = (TextView) customView.findViewById(R.id.list_item_datalist_textview_details_1);
elementChecker = (CheckBox) customView.findViewById(R.id.checkBox_Item);
String singleListItem = getItem(position);
String[] singleListItemArray = singleListItem.split("\t");
String id = singleListItemArray[0];
String product = singleListItemArray[1];
String label = singleListItemArray[2];
allElementsAdapter = product + label + serial + mac + daaid + bill;
switch (product) {
case "Pc":
image.setImageResource(R.drawable.icon_pc_circle);
break;
case "Laptop":
image.setImageResource(R.drawable.icon_laptop_circle);
break;
}
String details1 = product;
textViewlabel.setText(label);
textViewdetails1.setText(details1);
elementChecker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (elementChecker.isChecked()){
Log.d("SELECTED", "yes");
}else {
Log.d("SELECTED", "no");
}
}
});
return customView;
}
public String getAllElements(){
return allElementsAdapter;
}
}
OnClickListener
只看最后一个条目。有人可以帮我解释一下我必须做什么吗?
您必须在 getView
中声明CheckBox elementChecker;
你总是覆盖你的 elementChecker
Checkbox elementChecker = (CheckBox) customView.findViewById(R.id.checkBox_Item);
将是一个解决方案。但是您必须将复选框的状态保存在某处...