为了更好地解释我想要对我的应用做什么,我上传了一张图片: 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
}
答案 0 :(得分:0)
在TableView类中添加一个名为
的变量private boolean isSelected=false;
在类
中为此变量添加getter和setterprivate 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
}
}