我有一个回收站视图,其中的第一项必须具有标题。我目前实现它的方式是获取适配器位置,如果它是0,那么我将包含标题的textview设置为visible并将其设置为其他值。 但是,当我通过notifyItemRemoved删除第一项时,则标题在新的第一项上不可见(即之前的第二项)。有人可以告诉我我需要做什么吗?
更新:我的意思是我在视图本身中具有标题文本,并且需要根据视图是否是recyclerview中的第一个视图来切换可见性。
因此,当前我在onBindViewHolder方法中切换可见性,在该方法中检查位置是否为0,然后将标题可见性设置为View.VISIBLE,否则将其设置为VIEW.GONE。但是,为了使它在任何时候都可以对适配器进行任何更改,然后需要再次重新创建整个适配器并将其设置为“回收者”视图。
道歉,不公开代码,但其中包含一些我无法透露的敏感信息
答案 0 :(得分:0)
您必须使用getItemViewType(int position)
方法来确定什么物品应该在什么位置。
private static final int HEADER = 0;
private static final int ITEMS = 1;
@Override
public int getItemViewType(int position) {
if (position == 0) {
return HEADER;
} else {
return ITEMS;
}
}
在getItemCount()
中,您必须再添加一项,因为我们有标头
@Override
public int getItemCount() {
return sections.size() + 1;
}
答案 1 :(得分:0)
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
if(position==5) {
holder.textview.setVisibility(View.GONE);
}
}
答案 2 :(得分:0)
谢谢大家的回答。 但是,他们还没有解决我的问题,至少到目前为止,我已经通过使用recyclerview的布局管理器来获取视图位置,并且如果要删除的视图的位置为0,那么我将设置标题textview到第二个视图的可见位置,然后调用notifyItemRemoved。如果位置不为0,则只调用notifyItemRemoved。