使复选框对于gridview可见

时间:2018-08-27 18:15:00

标签: java android android-layout android-gridview

我最初使我所有的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

0 个答案:

没有答案
相关问题