Сделайте флажок видимым для gridview - PullRequest
0 голосов
/ 27 августа 2018

Я изначально сделал все свои флажки для gridview arrayadapter невидимыми. После долгого щелчка griditem я хочу сделать все флажки видимыми. Мой адаптер класса

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;
    }

 }

Это метод в основной деятельности.

 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;
    });

Это делает все флажки видимыми, кроме флажка одной строки. См. Изображение. Как сделать все флажки видимыми? Любая помощь приветствуется. enter image description here

...