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