我的代碼有問題,我在一個 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 的項目布局應該位于的父布局。祝你好運!
添加回答
舉報
0/150
提交
取消