如何更改回收站视图中的特定项目?

问题描述

我想从回收站视图中的特定项目中删除 textview。我写了下面的代码来做到这一点

@Override
    public void onBindViewHolder(@NonNull final Myholder holder,final int possion) {
        final String n = names.get(possion);
        if(possion==3){
        holder.textView.setVisibility(View.GONE);}}

但这会更改所有项目,我只想让位置编号 3 的项目视图消失。 这是我的观点持有者

public static class Myholder extends RecyclerView.ViewHolder {
        TextView textView;
        public Myholder(@NonNull View itemView) {
            super(itemView);
        textView = itemView.findViewById(R.id.textfolder);
        }
    }

我该怎么办?

解决方法

永远记住 RecyclerView 回收 视图持有者。也就是说,相同的 ViewHolder 实例将被重新用于不同的视图。这意味着使用 if 语句修改视图而没有相应的 else 几乎总是一个坏主意。

所以,试试这个:

if (possion == 3) {
    holder.textView.setVisibility(View.GONE);
} else {
    holder.textView.setVisibility(View.VISIBLE);
}

另请注意,仅检查 position 参数不一定是个好主意。如果您使用 notifyItemInserted()notifyItemRemoved(),这可能会导致问题。

最好在该位置设置有关该项目的某些内容以指示不应显示其文本。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...