Make the checkbox visible for gridview

岁酱吖の 提交于 2019-12-13 03:58:08

问题


I intially made all my checkbox of gridview arrayadapter as invisible. After longclick of griditem i want to make all checkbox visible. My adapter class

public class GridViewAdapter extends ArrayAdapter<ImageItem> {


private Context context;
private int layoutResourceId;
private ArrayList<ImageItem> data = new ArrayList<ImageItem>();
private File[] imageFiles;
 public GridViewAdapter(Context context, int layoutResourceId, ArrayList<ImageItem> data) {

    super(context, layoutResourceId, data);

    this.layoutResourceId = layoutResourceId;//id of grid_item_layout
    this.context = context;
    this.imageFiles = imageFiles;
    this.data = data;    }
 public View getView(final int position, final View convertView, @NonNull ViewGroup parent) {
    row = convertView;
    final ViewHolder holder;


    //existing views recycled
    if (row == null) {
LayoutInflater inflater = ((Activity) context).getLayoutInflater();
        row = inflater.inflate(layoutResourceId, parent, false);
        holder = new ViewHolder();
        //find resource...
        holder.image = (ImageView) row.findViewById(R.id.image);

       holder.check = (CheckBox) row.findViewById(R.id.checkbox);
    row.setTag(holder);
 } else {
        holder = (ViewHolder) row.getTag();
   }


 holder.check.setOnCheckedChangeListener(null);
        holder.check.setFocusable(false);
      holder.check.setOnClickListener(new View.OnClickListener() {
            @Override
        public void onClick(View view) {

            if (data.get(position).isSelected()) {
                data.get(position).setSelected(false);
            } else {
                data.get(position).setSelected(true);
            }      
    }
    });


    holder.check.setChecked(data.get(position).isSelected());
holder.image.setImageBitmap(data.get(position).getImage());

    return row;
}

static class ViewHolder {

    ImageView image;
    CheckBox check;
    }

 }

This is method in mainactivity.

 gridAdapter = new GridViewAdapter(this, R.layout.grid_item_layout, 
                                                             getData());
    gridView.setAdapter(gridAdapter);


gridView.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
    @Override
    public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long l) {
        for(int index = 0; index < adapterView.getChildCount(); index++) {
            View nextchild = (adapterView.getChildAt(index));
            CheckBox checkBox = (CheckBox) 
            nextchild.findViewById(R.id.checkbox);
            checkBox.setVisibility(View.VISIBLE);
        }
    return true;
    });

This makes all the checkbox visible except the checkbox of one row.Refer the image.How to make all the checkbox visible?Any help is appreciated.

来源:https://stackoverflow.com/questions/52044878/make-the-checkbox-visible-for-gridview

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!