亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

適配器類錯誤。創建時不得附加 ViewHolder 視圖

適配器類錯誤。創建時不得附加 ViewHolder 視圖

神不在的星期二 2022-10-20 17:30:53
我的代碼有問題,我在一個 recyclerview 中創建了兩個適配器。我把它們都放在一個類中,我需要這個適配器根據某些情況返回一個 Viewholder。這是我的適配器代碼:public class CurrentUserTaskListAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {public List<Task> taskList;private static final int ITEM_TYPE_PUBLISHED_TASK = 1;private static final int ITEM_TYPE_ASSIGNED_TASK = 2;public CurrentUserTaskListAdapter(List<Task> taskList) {    this.taskList = taskList;}public class AssignedTaskViewHolder extends RecyclerView.ViewHolder {    View mView;    public TextView tvTagAndDate;    public TextView tvStatus;    public AssignedTaskViewHolder(View itemView) {        super(itemView);        mView = itemView;        tvTagAndDate = itemView.findViewById(R.id.tvTagAndDate);        tvStatus = itemView.findViewById(R.id.tvStatus);    }}public class PublishedTaskViewHolder extends RecyclerView.ViewHolder {    View mView;    public TextView tvTagAndDate;    public TextView tvStatus;    public PublishedTaskViewHolder(View itemView) {        super(itemView);        mView = itemView;        tvTagAndDate = itemView.findViewById(R.id.tvTagAndDate);        tvStatus = itemView.findViewById(R.id.tvStatus);    }}    @Override    public int getItemViewType(int position) {        if (taskList.get(position).getAssignedTo() == null)            return ITEM_TYPE_PUBLISHED_TASK;        else            return ITEM_TYPE_ASSIGNED_TASK;    }@NonNull@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {    LayoutInflater layoutInflater = LayoutInflater.from(viewGroup.getContext());    if(i == ITEM_TYPE_ASSIGNED_TASK){        layoutInflater.inflate(R.layout.layout_curent_user_assigned_tasks_item, viewGroup, false);        return new AssignedTaskViewHolder(viewGroup);    }    else if (i == ITEM_TYPE_PUBLISHED_TASK){        layoutInflater.inflate(R.layout.layout_current_user_pending_tasks, viewGroup, false);        return new PublishedTaskViewHolder(viewGroup);    }    return null;}在 getItemViewType 方法中,我驗證列表中的對象是哪個類型。
查看完整描述

1 回答

?
守著星空守著你

TA貢獻1799條經驗 獲得超8個贊

修復這部分,例如:


if (i == ITEM_TYPE_ASSIGNED_TASK) {

    View view = layoutInflater.inflate(R.layout.layout_curent_user_assigned_tasks_item, viewGroup, false);


    return new AssignedTaskViewHolder(view);

} else if (i == ITEM_TYPE_PUBLISHED_TASK) {

    View view = layoutInflater.inflate(R.layout.layout_current_user_pending_tasks, viewGroup, false);


    return new PublishedTaskViewHolder(view);

}

問題是您正在傳遞 ViewHolder 的項目布局應該位于的父布局。祝你好運!


查看完整回答
反對 回復 2022-10-20
  • 1 回答
  • 0 關注
  • 157 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號