我正在尝试取消选中自定义适配器中的所有检查以检查位置0。 如何取消选中all:holder.chkbox checked = false。谢谢
我编辑了我的代码。这是SpinnerCheckboxAdapter的所有代码。
ADAPTER
public class SpinnerCheckboxAdapter extends BaseAdapter {
public static String getSelected() {
return selected;
}
public void setSelected(String selected) {
SpinnerCheckboxAdapter.selected = selected;
}
public SpinnerCheckboxAdapter(Context context, ArrayList<String> items) {
arraylististItems = new ArrayList<String>();
arraylististItems.addAll(items);
layoutInflater = LayoutInflater.from(context);
this.context = context;
}
@Override
public int getCount() {
return arraylististItems.size();
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.spinner_row_checkbox, null);
holder = new ViewHolder();
holder.tv = (TextView) convertView.findViewById(R.id.texto_spinner_row_checkbox);
holder.chkbox = (CheckBox) convertView.findViewById(R.id.checkbox_spinner_row_checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv.setText(arraylististItems.get(position));
holder.chkbox.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View
if(position == 0) {
//CHECK ALL holder.chkbox
//holder.chkbox[1].setchecked = false;
//holder.chkbox[2].setchecked = false;
...
}
}
});
return convertView;
}
private class ViewHolder {
TextView tv;
CheckBox chkbox;
}
}
答案 0 :(得分:0)
请尝试这种方式,希望这有助于您解决问题。
public class SpinnerCheckboxAdapter extends BaseAdapter {
private Context context;
private ArrayList<HashMap<String,String>> data;
private String selected;
public String getSelected() {
selected = "";
for (HashMap<String,String> row : data){
if(row.get("isChecked").equals("true")){
selected+=row.get("title")+",";
}
}
if(selected.length()>1){
selected = selected.substring(0,selected.length()-1);
}
return selected;
}
public void setSelected(String selected) {
String[] selectedArray = selected.split(",");
for (String value : selectedArray){
for (HashMap<String,String> row : data){
if(row.get("title").toString().equals(value)){
row.put("isChecked","true");
break;
}
}
}
notifyDataSetChanged();
}
public SpinnerCheckboxAdapter(Context context, ArrayList<String> items) {
this.context = context;
data = new ArrayList<HashMap<String, String>>();
for (String item : items){
HashMap<String,String> row = new HashMap<String, String>();
row.put("title",item);
row.put("isChecked","false");
data.add(row);
}
}
@Override
public int getCount() {
return data.size();
}
@Override
public Object getItem(int pos) {
return data.get(pos);
}
@Override
public long getItemId(int pos) {
return pos;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(context).inflate(R.layout.spinner_row_checkbox, null);
holder.tv = (TextView) convertView.findViewById(R.id.texto_spinner_row_checkbox);
holder.chkbox = (CheckBox) convertView.findViewById(R.id.checkbox_spinner_row_checkbox);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.tv.setText(data.get(position).get("title"));
holder.chkbox.setChecked(Boolean.parseBoolean(data.get(position).get("isChecked")));
holder.chkbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(position==0 && isChecked){
for (HashMap<String,String> row : data){
row.put("isChecked",String.valueOf("false"));
}
}else{
data.get(position).put("isChecked",String.valueOf(isChecked));
int count=0;
for (int i=1;i<data.size();i++){
if(data.get(i).get("isChecked").equals("true")){
count++;
}
}
if(count==data.size()-1){
data.get(0).put("isChecked",String.valueOf("false"));
}
}
notifyDataSetChanged();
};
}
});
return convertView;
}
private class ViewHolder {
TextView tv;
CheckBox chkbox;
}
}