gpt4 book ai didi

java - 如何创建算法来在 RecyclerView 中设置多重检查项目

转载 作者:行者123 更新时间:2023-12-02 01:21:01 24 4
gpt4 key购买 nike

我需要创建一个算法来在 RecyclerView 中设置选中的项目。我有一个由带有 TextView 和 ImageView 的框制成的 RecyclerView,我使用 TextView 显示列表中的 nameItems,并使用 ImageView 在用户单击它时显示检查。我想要做的是,每次用户单击某个项目时,都会出现检查,而每次他单击已检查的项目时,检查都会消失。

我创建了一个算法,该算法使用设置为 false 的 boolean 变量 (isChecked),每次用户单击某个项目时,该变量都会设置为 true,反之亦然。在这种情况下,用户必须单击列表的下一项两次才能显示检查。我该怎么做?提前非常感谢您

这是我的适配器的类:

public class RecyclerTypeListViewAdapter extends RecyclerView.Adapter<RecyclerTypeListViewAdapter.TypeViewHolder> {

List<TipologiaEvento> eventType;
private boolean isChecked = false;

public RecyclerTypeListViewAdapter (List<TipologiaEvento> typeList){
this.eventType = typeList;
}

public static class TypeViewHolder extends RecyclerView.ViewHolder {
LinearLayout linearLayout;
TextView typeName;
ImageView check_icon;

TypeViewHolder (View view){
super(view);
linearLayout = view.findViewById(R.id.type_listed_linear_layout);
typeName = view.findViewById(R.id.event_type_text_view);
check_icon = view.findViewById(R.id.event_type_checked_icon);


}
}

@Override
public TypeViewHolder onCreateViewHolder(ViewGroup viewGroup, int viewType) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cell_type_listed, viewGroup, false);
TypeViewHolder tvh = new TypeViewHolder(view);
return tvh;
}

@Override
public void onBindViewHolder(final TypeViewHolder typeViewHolder, int position) {
typeViewHolder.typeName.setText(eventType.get(position).getDescrizione());

typeViewHolder.linearLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(isChecked == false) {
typeViewHolder.check_icon.setVisibility(View.VISIBLE);
Toast.makeText(v.getContext(), "Aggiunto: " + typeViewHolder.typeName.getText().toString(), Toast.LENGTH_SHORT).show();
isChecked = true;
} else {
typeViewHolder.check_icon.setVisibility(View.INVISIBLE);
Toast.makeText(v.getContext(), "Rimosso: " + typeViewHolder.typeName.getText().toString(), Toast.LENGTH_SHORT).show();
isChecked = false;
}
}
});
}

}

最佳答案

只需在列表的模型类中取一个 boolean 值即可。并在bindviewholder中。只需输入如下条件

if(list.get(position).ischecked()) {
action of checked
} else {
action of unchecked
}

单击该项目时,您只需更改对象的标志并通知适配器。

关于java - 如何创建算法来在 RecyclerView 中设置多重检查项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57690231/

24 4 0
文章推荐: java - 如何在 openfire 中为管理 REST API 启用或添加裸身份验证
文章推荐: java - 我应该如何获得 2 个 list 之间的差异