Android: 重新绑定 ListView 或 RecyclerView 不刷新 Header

Android: Rebind ListView Or RecyclerView Without Refreshing Header

我需要刷新/重新绑定 ListView 或 RecyclerView 内容而不刷新 header 项目本身。

关于如何实现这一目标的任何提示?

谢谢。

是的,你可以做到。通常,您的 header 在列表中的位置为 0,因此 header 位于列表的顶部。因此,对于您的列表,例如RecyclerView 你必须初始化适配器(在 RecyclerView 的情况下你必须创建 RecyclerView.Adapter class 的访问器)并且这个适配器有很多方法来更新适配器中的数据(notifyDataSetChanged(), notifyItemInserted() 等),您可以使用其中一种方法,具体取决于您的目的。因此,在您的情况下,您可以使用 notifyItemRangeChanged(int positionStart, int itemCount)

您可以在官方中找到有关这些方法的更多信息documentation

假设 headerposition 0:

假设您要绑定一次 header,然后在刷新后停止绑定:

当您调用 notifyDataSetChanged() 重新加载时,将再次调用适配器中的 onBindViewHolder() 方法来刷新数据,请记住这一点。您可以设置一个布尔值,以便绑定 header 一次。因此即使 onBindViewHolder() 被多次调用 header 也会绑定一次。

class Adapter extends ...........{

//use a boolean as a flag
private boolean bindHeader = true;
........
.......
.......

@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {

..........

if(position == 0 && bindHeader){

//bind the header only for the first time
......
......

//then stop binding after refresh
bindHeader = false;

}else if(position > 0){

//bind the reset of the items here


}


}

..............

..............



}