如何更改回收站视图中的特定项目?
how to change specific items in recycler view?
我想从回收站视图中的特定项目中删除 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
实例将被重新用于不同的视图。这意味着在没有对应的 else
.
的情况下使用 if
语句修改视图几乎总是一个坏主意
所以,试试这个:
if (possion == 3) {
holder.textView.setVisibility(View.GONE);
} else {
holder.textView.setVisibility(View.VISIBLE);
}
另请注意,仅检查 position
参数不一定是个好主意。如果您使用 notifyItemInserted()
或 notifyItemRemoved()
,这可能会导致问题。
最好在该位置对项目进行一些设置,以指示不应显示其文本。
我想从回收站视图中的特定项目中删除 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
实例将被重新用于不同的视图。这意味着在没有对应的 else
.
if
语句修改视图几乎总是一个坏主意
所以,试试这个:
if (possion == 3) {
holder.textView.setVisibility(View.GONE);
} else {
holder.textView.setVisibility(View.VISIBLE);
}
另请注意,仅检查 position
参数不一定是个好主意。如果您使用 notifyItemInserted()
或 notifyItemRemoved()
,这可能会导致问题。
最好在该位置对项目进行一些设置,以指示不应显示其文本。