要解决Android RecyclerView与ViewBinding中notifyItemChanged仅第一次有效的问题,可以按照以下步骤进行操作:
public class MyAdapter extends RecyclerView.Adapter {
    private List mDataList;
    private LayoutInflater mInflater;
    public MyAdapter(Context context, List dataList) {
        mInflater = LayoutInflater.from(context);
        mDataList = dataList;
    }
    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        // 使用ViewBinding.inflate方法绑定item视图
        ItemLayoutBinding binding = ItemLayoutBinding.inflate(mInflater, parent, false);
        return new ViewHolder(binding);
    }
    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        DataItem item = mDataList.get(position);
        // 设置item视图的数据
        holder.binding.textView.setText(item.getText());
    }
    @Override
    public int getItemCount() {
        return mDataList.size();
    }
    public class ViewHolder extends RecyclerView.ViewHolder {
        // 声明ViewBinding对象
        ItemLayoutBinding binding;
        public ViewHolder(@NonNull ItemLayoutBinding binding) {
            super(binding.getRoot());
            this.binding = binding;
        }
    }
}
   
public class DataItem {
    private int id;
    private String text;
    public DataItem(int id, String text) {
        this.id = id;
        this.text = text;
    }
    public int getId() {
        return id;
    }
    public String getText() {
        return text;
    }
}
@Override
public long getItemId(int position) {
    return mDataList.get(position).getId();
}
// 在RecyclerView的Adapter中启用稳定的item标识符
setHasStableIds(true);
现在,当调用notifyItemChanged方法时,RecyclerView会根据item的唯一标识符来刷新相应的item视图。这样,notifyItemChanged就会对每个item都有效,而不仅仅是第一次。