gpt4 book ai didi

android - 如何从 RecyclerView 获取修改后的数据?

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

我有一个 RecyclerView 来显示随适配器传递的过滤器列表。此列表包含带有 bool 值的项目,用于检查项目是否被按下。我需要将这些数据返回到 Activity 中以获得已检查元素的列表。我怎样才能做到这一点?

RecyclerView 适配器

public class RvFilterAdapter extends BaseQuickAdapter<FilterSelectable, BaseViewHolder> {

public RvFilterAdapter(int layoutResId, List data) {
super(R.layout.filter_item, data);
}

@Override
protected void convert(BaseViewHolder viewHolder, FilterSelectable item) {

int position = viewHolder.getLayoutPosition();

setupViews(viewHolder, item);
setupListeners(viewHolder, item);

Log.e("RV", "position=" + position + " i=" + item.getId() +" name=" + item.getName() + " checked=" + item.isSelected());

}

public void setupViews(BaseViewHolder baseViewHolder, FilterSelectable item){

baseViewHolder
.setText(R.id.tv_filter_name, item.getName())
.setChecked(R.id.tbc_filter, item.isSelected())
.addOnClickListener(R.id.ll_filter_root)
.addOnClickListener(R.id.tbc_filter);

}

public void setupListeners(BaseViewHolder baseViewHolder, final FilterSelectable item){

baseViewHolder.getView(R.id.tbc_filter).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(v.isSelected()){
v.setSelected(false);
item.setSelected(false);
}else{
v.setSelected(true);
item.setSelected(true);
}
}
});

}

}

过滤 Activity

RvFilterAdapter filterAdapter = new RvFilterAdapter(this, R.layout.filter_item, filterList);
filterAdapter.openLoadAnimation();
recyclerView.setAdapter(filterAdapter);

我如何修改传递给适配器的 filterList 以保持 Activity 和 RecyclerView 之间的变化?

谢谢

最佳答案

将以下方法添加到您的适配器并在您的 Activity 中使用它,如 adapter.getSelection()

public List<Item> getSelection() {

List<Item> selectedItems = new ArrayList<>();

for(Item item: list) {
if(item.isSelected()) {
selectedItems.add(item);
}
}
return selectedItems;
}

关于android - 如何从 RecyclerView 获取修改后的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44153919/

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