[英]onBindViewHolder not triggering for items in recycler view
我有一個包含 10 個項目的回收站視圖。 我滾動到頁面底部,現在我正在嘗試為第一個項目調用notifyItemChanged(pos)
,因為我向下滾動后該項目不可見。 當我調用它時,它不會觸發第一項的onBindViewholder()
。 所以簡而言之,我的問題是當我使用未顯示在屏幕上的 position 調用notifyItemChanged(pos)
時,它不會觸發onBindViewHolder()
嗎? 這是我的適配器代碼
@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 中的每個項目調用 onBindViewHolder,並一直到您的 usertasks.size。 將您的 onGetItemCount 更改為:
@Override
public int getItemCount() {
if (usertasks != null)
return usertasks.size();
else{
return 0;
}
}
現在,只要您的 usertasks 不是 null,您的 notifyDatasetChanged 就會調用 onBindViewHolder。 如果仍然沒有調用,請查找您的用戶任務,因為它可能是 null
首先在recycler視圖適配器class中創建一個方法,喜歡更新:
public void setData(ArrayList<GridItem> newitems,int pos){ // this is new array
this.mydata=newitems;//here you update your orignal data
this.notifyItemChanged(pos);//here notify the change at particular position
}
在您的片段 class 中:
//get your recyclerview adapter and call the above method
adapter.setData(newdata,position);
我能夠解決這個問題。 問題是永遠不會為已經回收的項目觸發綁定視圖持有者。 由於我的邏輯是在綁定視圖持有者中編寫的,因此它不起作用,而是我更新了片段中的列表並調用了 notifyDataSetChanged。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.