当前位置: 首页 > 知识库问答 >
问题:

OnBindViewWholder未触发回收器视图中的项

令狐声
2023-03-14

我有一个回收器视图有10个项目。我滚动到页面底部,现在我正尝试为第一个项目调用NotifyItemChanged(pos)。当我调用它时,它不会触发第一个项目的onBindViewHolder()。因此,简而言之,我的问题是,当我调用NotifyItemChanged(pos)时,其位置没有显示在屏幕上,它是否触发了OnBindViewWholder()?。这是我的适配器代码

@SuppressLint("NewApi")
    @Override
    public void onBindViewHolder(@NonNull final UserTasksViewHolder holder, final int position) {
        if (usertasks != null) {
            final UserSessionTasksEntity current = usertasks.get(position);
            viewPos = prefs.getString(view_position, "");
            holder.taskCode.setText(current.getTaskCode());
            holder.taskName.setText(current.getTaskName());
    }

    @Override
    public int getItemCount() {
        if (usertasks != null)
            return usertasks.size();
        return 0;
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public int getItemViewType(int position) {
        return position;
    }

共有1个答案

徐欣德
2023-03-14

错误发生在onItemCount方法上。NotifydatasetChanged为usertasks中的每个项调用OnBindViewWholder,并一直到usertasks.Size。将您的onGetItemCount更改为:

@Override
public int getItemCount() {
    if (usertasks != null)
        return usertasks.size();
    else{
       return 0;
    }
     
}

现在,只要usertasks不为Null,notifyDatasetChanged将调用OnBindViewWholder。如果它仍未调用,则查找usertasks,因为它可能为空

 类似资料:
  • 当我尝试在回收器视图中选择一个元素时,不会调用OnBindViewWholder。我使用的是一个水平布局,所有元素最初都不显示(7个元素中有4个显示,当用户向右移动时,3个元素交替显示)。通常,当用户单击一个元素时,OnBindViewWholder应该被激发,但对我来说却没有发生。它只在初始化时触发。因为它没有激发,所以我不能单击回收器视图中的任何元素。也许和我的布局有关?我不确定 MyAdap

  • 在其他回收器视图中有一个回收器视图。两者都需要垂直滚动。外部回收器视图滚动正常,但内部回收器视图滚动不正常。 这是代码: ViewAdapter如下: 我尝试了以下两种回收商观点,但都无法解决问题 也尝试了这个:

  • 如何在回收者视图中收听触摸事件?我已经为视图持有者实现了click listener,但它可以在整个视图上工作。我在每个视图支架中都有一个图像视图,当用户单击图像视图时,我需要执行一个操作。 当前视图持有者代码。

  • 我添加了,但仍然会出现错误。那我到底犯了什么错?

  • 我正在制作一个应用程序,其中有回收器视图。但我无法在我的应用程序中看到回收器视图。当我检查Logcat时,它显示'e/recyclerview:No adapter attached;正在跳过布局‘。为什么会发生这种情况,我该如何修复? 我的主要活动代码: 我的适配器(PostAdapter.java)类代码:

  • 这个应用程序直接从应用编程接口获取数据。当它运行时,会发生这种类型的错误。基本上,我认为错误发生在getItemCount()方法中,但我无法解决这个问题。我已经附上了错误文件和整个代码。如果你能解决这个错误,我将不胜感激。 JAVAlang.NullPointerException:尝试调用接口方法“int java”。util。列表com上的空对象引用上的size()。techbrightso