我有一个回收器视图有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;
}
错误发生在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