gpt4 book ai didi

android - 如何编辑 list Recycler 项目以及新选择的项目

转载 作者:行者123 更新时间:2023-11-29 00:55:29 24 4
gpt4 key购买 nike

我在应用程序的编辑详细信息屏幕中显示了一个选中的 recyclerview。当我进入编辑屏幕时,我能够将之前选择的项目标记为已选中,工作正常,但我的挑战是我无法将之前选择的项目与新选择的项目一起编辑。我的服务器中只会更新新选择的项目。

例如:之前我选择了 {1,2} 个位置项目,当我进入编辑屏幕时,1,2 个项目被标记为已选中,其余标记为未选中。现在,如果我选择新项目{3,4} 仅{3,4} 添加以前选择的项目{1,2} 未添加,有时它们甚至不可编辑。

这是我的viewholder类:

//in some cases, it will prevent unwanted situations
holder.checkBox.setOnCheckedChangeListener(null);

//if true, your checkbox will be selected, else unselected
holder.checkBox.setChecked(allMarketingOptions.get(position).isSelected());

for(int i=0;i<model.getTargetedMarketingOption().size();i++){
if(model.getTargetedMarketingOption().get(i).equals(allMarketingOptions.get(position).getEmailGroupName())){
holder.checkBox.setChecked(true);
}
}

holder.cell.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
boolean isChecked = !holder.checkBox.isChecked();
holder.checkBox.setChecked(isChecked);
guestListener.OnMultipleMarketOptListener(position, isChecked);
}
});

这是在我的 Activity 中获取的选定项目列表:

@Override
public void OnMultipleMarketOptListener(int position, boolean isChecked) {

allMarketingOptions.get(position).setSelected(isChecked);
allMarketOptionsAdapter.notifyDataSetChanged();
}

最佳答案

你应该再了解一下recyclerView的滑动原理,然后再试着理解我下面的做法。

在你的适配器中:

hashMap<Int,Boolean> checkStatusMap,// int is position, Boolean is CheckStatus

在你的监听类中:

//Ensure that the current location is correct in recyclerView
int mPosition ;
void updateViewByPosition(int position){
mPosition=position
checked= getCheckStatusByPosition(mPosition,checkStatusMap);
holder.checkBox.setChecked(checked);//new
}

@Override
public void onClick(View v) {
boolean newChecked= !getCheckStatusByPosition(mPosition,checkStatusMap);
SaveCheckStatusByPosition(newChecked,mPosition,checkStatusMap);//You need a map or list to store state
holder.checkBox.setChecked(newChecked);//new
}

在你的 onCreateViewHolder 方法中:

viewHolder.setOnClickListener(listener);//You need to implement a listener

这是在您的 onBindViewHolder 中获取的选定项目列表:

@Override
public void onBindViewHolder(int position) {
viewholder.getlistener.updateViewByPosition(position);
}

上传网络的位置:

updateDataByCheckMap(apater.getMap());

关于android - 如何编辑 list Recycler 项目以及新选择的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55197765/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com