Android 如何选择/取消选择所有复选框?
我有一个带有imageview、textView和复选框的适配器,还有一个用于选择所有复选框的全选按钮。我搜索了很多关于如何做这个“全选”复选框的内容,但没有成功。谁能再解释一下我该怎么办?求你了…我必须做这件紧急的事 这是我的适配器:Android 如何选择/取消选择所有复选框?,android,checkbox,adapter,Android,Checkbox,Adapter,我有一个带有imageview、textView和复选框的适配器,还有一个用于选择所有复选框的全选按钮。我搜索了很多关于如何做这个“全选”复选框的内容,但没有成功。谁能再解释一下我该怎么办?求你了…我必须做这件紧急的事 这是我的适配器: Public class LazyAdapter1 extends BaseAdapter { private Activity activity; private String[] data; private
Public class LazyAdapter1 extends BaseAdapter {
private Activity activity;
private String[] data;
private String[] nume;
private LayoutInflater inflater=null;
public ImageLoader imageLoader;
public LazyAdapter1(Activity a, String[] d, String[] f) {
activity = a;
data=d;
nume=f;
inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
imageLoader=new ImageLoader(activity.getApplicationContext());
}
public int getCount() {
return data.length;
}
public Object getItem(int position) {
return position;
}
public long getItemId(int position) {
return position;
}
public class ViewHolder{
public TextView text;
public ImageView image;
public CheckBox ck;
}
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.item, null);
holder=new ViewHolder();
holder.text=(TextView)vi.findViewById(R.id.text);;
holder.image=(ImageView)vi.findViewById(R.id.image);
holder.ck=(CheckBox)vi.findViewById(R.id.chkbox);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
holder.text.setText(nume[position]);
holder.image.setTag(data[position]);
imageLoader.DisplayImage(data[position], activity, holder.image);
return vi;
}
}
提前感谢。这将获取listview中的所有视图,并在每个视图中获取复选框并将其设置为选中:
List<View> listOfViews = new ArrayList<View>();
listView1.reclaimViews(listOfViews);
for (View v : listOfViews)
{
CheckBox cb = (CheckBox)v.findViewById(R.id.checkbox);
cb.setChecked(true);
}
然后,如果要选中所有复选框,请将包含复选框的复选状态的arraylist中的所有值设置为true。然后调用listView1.setAdapteradapter
现在点击你的按钮
交换flag的值
flag = !flag;
adapter.notifydatasetchanged();
现在在您的getView方法中
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder;
if (convertView == null) {
vi = inflater.inflate(R.layout.item, null);
holder = new ViewHolder();
holder.text = (TextView) vi.findViewById(R.id.text);
holder.image = (ImageView) vi.findViewById(R.id.image);
holder.ck = (CheckBox) vi.findViewById(R.id.chkbox);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
holder.ck.setChecked(flag);
holder.text.setText(nume[position]);
holder.image.setTag(data[position]);
imageLoader.DisplayImage(data[position], activity, holder.image);
return vi;
}
我为每个选中的项目分配了一个id,然后使用哈希映射跟踪选中的项目谢谢…它可以工作:…仍然存在一个小问题:当我选择“全选”按钮时,复选框已选中,但我只能在滚动所有列表后才能看到它们,因为当我选择按钮时,第一视图中的项目未被选中。问题应该出在哪里?
flag = !flag;
adapter.notifydatasetchanged();
public View getView(int position, View convertView, ViewGroup parent) {
View vi = convertView;
ViewHolder holder;
if (convertView == null) {
vi = inflater.inflate(R.layout.item, null);
holder = new ViewHolder();
holder.text = (TextView) vi.findViewById(R.id.text);
holder.image = (ImageView) vi.findViewById(R.id.image);
holder.ck = (CheckBox) vi.findViewById(R.id.chkbox);
vi.setTag(holder);
} else {
holder = (ViewHolder) vi.getTag();
}
holder.ck.setChecked(flag);
holder.text.setText(nume[position]);
holder.image.setTag(data[position]);
imageLoader.DisplayImage(data[position], activity, holder.image);
return vi;
}