选择多个gridviews项并显示一个浮动按钮

时间:2018-06-19 05:44:34

标签: android android-recyclerview android-gridview

为了更好地解释我想要对我的应用做什么,我上传了一张图片: Multiple items selected on gridview

所以,我的问题是: 如何选择这样的多个项目,并在选择GridView的一个或多个项目时添加一个Float按钮?

这些项目位于GridView内部,GridView位于RecyclerView内部。 谢谢你的帮助,对不起,如果我的英语很奇怪,我就是BR。 ;)

我的适配器:

    package com.example.mack.softbar;

    //imports

    public class RecyclerViewTableAdapter extends RecyclerView.Adapter<RecyclerViewTableAdapter.ViewHolder>{

        private ArrayList<TableView> tableViewArrayList;
        private Context context;
        protected ItemListener listener;


        public RecyclerViewTableAdapter(ArrayList<TableView> tableViewArrayList, Context context, ItemListener listener) {
            this.tableViewArrayList = tableViewArrayList;
            this.context = context;
            this.listener = listener;
        }

        public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {


            private ConstraintLayout tableBg;


            public ViewHolder(View v) {
                super(v);
                v.setOnClickListener(this);

                tableBg = (ConstraintLayout) v.findViewById(R.id.layout_table);
                tableIc = (ImageView) v.findViewById(R.id.icTable);
                tv1 = (TextView) v.findViewById(R.id.table_name1);
                tvStatus = (TextView) v.findViewById(R.id.textViewStatus);
            }

            public void setData(TableView tableView) {

                tableBg.setBackgroundResource(tableView.getImgBg());
/*
... setting the views data ( tableIc, tv1, tvStatus) ... 
*/


            }
            @Override
            public void onClick(View view) {
                tableView = tableViewArrayList.get(getAdapterPosition());
                if (listener != null) {


    //here is the action when i click on item


                }
            }
        }

        @Override
        public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(context).inflate(R.layout.gridview_table_row, parent, false);
            return new ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(ViewHolder holder, int index) {
            TableView tableViewPosition = tableViewArrayList.get(index);
            holder.setData(tableViewPosition);
        }

        @Override
        public int getItemCount() {
            return tableViewArrayList.size();
        }

        public interface ItemListener {
            void onItemClick(TableView tableBean);
        }


    }

我的模型(TableView)

public class TableView implements Serializable {

    private Integer id;
    private ArrayList<String> tableBeanNameList;
    private int status;
    private Integer imgBg;
    private Integer imgIc;

    public TableView() {
    }

    //getters and setters
}

1 个答案:

答案 0 :(得分:0)

在TableView类中添加一个名为

的变量
private boolean isSelected=false;

在类

中为此变量添加getter和setter
private boolean isSelected(){
return this.isSelected;
}

private void setSelected(boolean setSelected){
this.isSelected=setSelected;
}

现在你的适配器中维护一个变量,所选项目的数量,比如说

private int numberOfItemsSelected=0;

现在在你的onClick功能中

 @Override
                public void onClick(View view) {
                    tableView = tableViewArrayList.get(getAdapterPosition());
                    ...
    if(tableViewArrayList.get(getAdapterPosition()).isSelected(){
    tableViewArrayList.get(getAdapterPosition()).setSelected(false);
    numberOfItemsSelected=numberOfItemsSelected-1;
    }else{
    tableViewArrayList.get(getAdapterPosition()).setSelected(true);
    numberOfItemsSelected=numberOfItemsSelected+1;
    }

if(numberOfItemsSelected>0)
{
//Add logic to show your fab button
}
else{
//Add logic to hide your fab
}
                }