Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在底部工作表中获取checked recyclerview项并通过底部工作表中的按钮传递多个已检查数据_Android_Firebase_Android Recyclerview - Fatal编程技术网

Android 如何在底部工作表中获取checked recyclerview项并通过底部工作表中的按钮传递多个已检查数据

Android 如何在底部工作表中获取checked recyclerview项并通过底部工作表中的按钮传递多个已检查数据,android,firebase,android-recyclerview,Android,Firebase,Android Recyclerview,嗨,我不知道如何将多个选中的recyclerview项目数据上载到firebase 所以我想我必须知道哪个recyclerview项目被选中,以便将数据上传到firebase 但在底层java文件中,我不知道如何才能得到哪一个被检查 我的场景是,如果用户选中项目复选框(多项目检查可用)并单击“完成”按钮,则将数据上载到firebase 我怎样才能解决它 这是我的底部的recyclerview适配器 public class AdapterPinBottomSheet extends Recycl

嗨,我不知道如何将多个选中的recyclerview项目数据上载到firebase

所以我想我必须知道哪个recyclerview项目被选中,以便将数据上传到firebase

但在底层java文件中,我不知道如何才能得到哪一个被检查

我的场景是,如果用户选中项目复选框(多项目检查可用)并单击“完成”按钮,则将数据上载到firebase

我怎样才能解决它

这是我的底部的recyclerview适配器

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

ArrayList<ItemBottomSheetFolderList> array;
Context context;
private RecyclerViewClickListener listener;

public AdapterPinBottomSheet(ArrayList<ItemBottomSheetFolderList> array, Context context, RecyclerViewClickListener listener) {
    this.array = array;
    this.context =context;
    this.listener = listener;
}

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

@SuppressLint("ResourceAsColor")
@Override
public void onBindViewHolder(@NonNull AdapterPinBottomSheet.ViewHolder holder, int position) {
    final ItemBottomSheetFolderList itemBottomSheetFolderList = array.get(position);
    holder.listFolderName.setText(array.get(position).getFolderName());
    holder.listFolderPinNum.setText(String.valueOf(array.get(position).getFolderPinNum()));
    holder.cbPinFolder.setOnCheckedChangeListener(null);

    holder.cbPinFolder.setChecked(itemBottomSheetFolderList.isSelected());

    holder.cbPinFolder.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            itemBottomSheetFolderList.setSelected(isChecked);
        }
    });

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

public interface RecyclerViewClickListener{
    void onClick(View v, int position);
}

public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
    TextView listFolderName;
    TextView listFolderPinNum;
    CheckBox cbPinFolder;

    public ViewHolder(@NonNull View itemView) {
        super(itemView);
        listFolderName =itemView.findViewById(R.id.listFolderName);
        listFolderPinNum =itemView.findViewById(R.id.listFolderPinNum);
        cbPinFolder =itemView.findViewById(R.id.cbPinFolder);
        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        listener.onClick(itemView, getAdapterPosition());
        cbPinFolder.performClick();
    }
}

}
为了便于理解,我添加了我的UI


您可以在适配器中创建一个方法,单击“完成”可调用该方法以获取选定的数据列表。像下面这样

 public ArrayList<ItemBottomSheetFolderList> getSelectedArray() {
        ArrayList<ItemBottomSheetFolderList> selectedArray = new ArrayList<>();
        for (ItemBottomSheetFolderList folderList : array) {
            if (folderList.isSelected()) {
                selectedArray.add(folderList);
            }
        }
        return selectedArray;
    }
public ArrayList getSelectedArray(){
ArrayList selectedArray=新建ArrayList();
对于(ItemBottomSheetFolderList folderList:array){
if(folderList.isSelected()){
选择Array.add(文件夹列表);
}
}
返回所选阵列;
}

谢谢您的回答。我是初学者,所以我需要更多的建议。。!在adapter ViewHolder类中添加代码是否正确?我怎么能把这个叫做底部纸呢?我试过像((AdapterInBottomSheet)folderRecyclerView.getAdapter().getSelectedArray());但是我找不到那种方法。谢谢你,先生!!!我解决了。我打错球了。By((AdapterInBottomSheet)folderRecyclerView.getAdapter()).getSelectedArray();这是我解决的!
 public ArrayList<ItemBottomSheetFolderList> getSelectedArray() {
        ArrayList<ItemBottomSheetFolderList> selectedArray = new ArrayList<>();
        for (ItemBottomSheetFolderList folderList : array) {
            if (folderList.isSelected()) {
                selectedArray.add(folderList);
            }
        }
        return selectedArray;
    }