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

onCreateViewHolder在RecyclerView中未调用[重复]

燕鸿文
2023-03-14

我想单击按钮将View添加到RecycleView中,但未调用适配器的实现方法。

这是我的代码:

recyclerView = (RecyclerView)findViewById(R.id.lecturer_recycler_view);
recyclerView.setHasFixedSize(true);

recyclerView.setLayoutManager(new LinearLayoutManager(CourseCreating.this));

recAdapter = new CourseDetailAdapter();
recyclerView.setAdapter(recAdapter);

btnAdd.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Toast.makeText(CourseCreating.this, "click", Toast.LENGTH_SHORT).show();
            recAdapter.addSchedule(new Schedule());
        }
    });

CourseDetailAdapter。班

public class CourseDetailAdapter extends RecyclerView.Adapter<CourseDetailAdapter.ViewHolder>{

private static List<Schedule> scheduleList;

public static class ViewHolder extends RecyclerView.ViewHolder {

    public Spinner spnDay;
    public AppCompatEditText etxtRoom;
    public EditText etxtStarttime, etxtEndtime;
    public ImageButton btnDelete;

    public ViewHolder(View itemView) {
        super(itemView);
        spnDay = (Spinner)itemView.findViewById(R.id.detail_day);
        etxtRoom = (AppCompatEditText)itemView.findViewById(R.id.detail_room);
        etxtStarttime = (EditText)itemView.findViewById(R.id.detail_starttime);
        etxtEndtime = (EditText)itemView.findViewById(R.id.detail_endtime);
        btnDelete = (ImageButton)itemView.findViewById(R.id.detail_delete);
    }
}

public void addSchedule(Schedule schedule) {
    if(scheduleList == null) scheduleList = new ArrayList<>();
    scheduleList.add(schedule);
    Log.d("LOGIN", scheduleList.toString());
    notifyDataSetChanged();
}

@Override
public CourseDetailAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    Log.d("LOGIN", "Holder");
    View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_detail, parent, false);
    return new ViewHolder(view);
}

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    Log.d("LOGIN", "Bindview");
}

@Override
public int getItemCount() {
    return 0;
}
}

我想为输入数据添加detail_itemlayout,所以我不确定是否正确

共有1个答案

霍伟彦
2023-03-14

尝试像这样更改getItemCount方法

@Override
public int getItemCount() {
  return (scheduleList != null)? scheduleList.size() : 0;
}
 类似资料:
  • 没有任何错误,所有数据似乎都有效。出于某种原因,正在调用与视图相关的其他方法。我已经确保了以下几点: > > 正在调用构造函数,成员变量有效。 父视图是垂直线性布局;没有scrollview,或任何其他具有自己滚动属性的视图。 包含片段的视图被创建并显示在屏幕上。 下面是片段中的声明,后跟适配器。任何帮助都将不胜感激,因为这完全令人困惑。

  • 问题内容: 我的RecyclerView不会调用onCreateViewHolder,onBindViewHolder,因此,在recyclerview中不会显示任何内容。我放置了调试日志,但未显示日志。可以是什么? 我的适配器: 我将用于在RecyclerView中添加项目。 在片段中: XML档案: comment_row xml文件: 我将使用以下代码将项目添加到RecyclerView:

  • 我已经研究了这个问题的几个SO答案(这里、这里和这里),但没有一个提议的解决方案奏效。我的问题是我的RecyclView列表项没有显示。我在MessengerRecyclAdapter、onCreateViewHolder、onBindViewHolder和getItemCount中设置了断点,并且只调用了第一个。在断点中,我输入了表达式评估器并执行 并得到了预期的答案20。RecyclerVie

  • 我的不调用、甚至构造函数,因此中不显示任何内容。我放了日志进行调试,但没有显示日志。可能是什么问题? 我的适配器: 我的自定义行XML: 而我的片段:

  • 这是一个XML,当我使用ScrollViewRecyclerView,如果不在XML 那么原因是什么呢?

  • 我正在从Firebase数据库获取一些数据,并试图用它填充适配器。在适配器的被调用后,屏幕闪烁,什么也没发生,我甚至无法在onBindViewHolder中捕捉到断点。 这是我的代码: POJO类: } 这是我的活动布局,称为“活动结果”。包含RecyclerView的xml 这是我的Adapters ViewHolder布局,名为score_view_holder。xml 因此,它将包含两个水平