【问题标题】:RecycleView is blank. What do i miss?RecyclerView 是空白的。我想念什么?
【发布时间】:2018-09-22 04:04:57
【问题描述】:

我不明白我在 prepareQuestion 方法中遗漏了什么。 MainActivity 启动但我的 RecycleView 是空的。一开始在 MainActivity 我有问题和单选按钮,当时间用完或按下“确认/下一步”按钮时,下一个问题和选择正在加载。我决定尝试使用 RecycleView 和 Cards 在 MainActivity 中一次加载所有问题。

公共类 MainActivity 扩展 AppCompatActivity {

private QuestionAdapter adapter;
private ArrayList<Question> questionList;
private int questionCountTotal;
private long backPressedTime;

public QuizDbHelper dbHelper;
RecyclerView recyclerView;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    recyclerView = findViewById(R.id.recycler_view);
    questionList = new ArrayList<>();
    adapter = new QuestionAdapter(this, questionList);

    RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(this, 1);
    recyclerView.setLayoutManager(mLayoutManager);
    recyclerView.setItemAnimator(new DefaultItemAnimator());
    recyclerView.setAdapter(adapter);

    dbHelper = new QuizDbHelper(this);
    questionList = dbHelper.getAllQuestions();
    questionCountTotal = questionList.size();
    Collections.shuffle(questionList);


    prepareQuestion();


}


private void prepareQuestion() {

    //Tried different things here. Maybe problem is somewhere else?
    Question q = new Question();
    questionList.add(q);
    //        questionList.addAll(dbHelper.getAllQuestions());
    adapter.notifyDataSetChanged();



}

}

这里是我的 QuestionAdapter

public class QuestionAdapter extends RecyclerView.Adapter<QuestionAdapter.MyViewHolder> {

private ArrayList<Question> questionList;

public class MyViewHolder extends RecyclerView.ViewHolder {
    public TextView tvQuestion, tvScore, tvQuestionCount, tvCountdown;
    public RadioGroup rbGroup;
    public RadioButton rb1, rb2, rb3, rb4;



    public MyViewHolder(View view) {
        super(view);
        tvQuestion = view.findViewById(R.id.question);
        tvScore = view.findViewById(R.id.score);
        tvQuestionCount = view.findViewById(R.id.question_count);
        tvCountdown = view.findViewById(R.id.count_down);
        rbGroup = view.findViewById(R.id.radiog_group);
        rb1 = view.findViewById(R.id.radio_button1);
        rb2 = view.findViewById(R.id.radio_button2);
        rb3 = view.findViewById(R.id.radio_button3);
        rb4 = view.findViewById(R.id.radio_button4);
    }
}


public QuestionAdapter(Context mContext, ArrayList<Question> questionList) {
    this.questionList = questionList;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
    View itemView = LayoutInflater.from(parent.getContext())
            .inflate(R.layout.question_card, parent, false);

    return new MyViewHolder(itemView);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, int position) {
    Question question = questionList.get(position);
    holder.tvQuestion.setText(question.getQuestion());
    holder.rb1.setText(question.getOption1());
    holder.rb2.setText(question.getOption2());
    holder.rb3.setText(question.getOption3());
    holder.rb4.setText(question.getOption4());
}

@Override
public int getItemCount() {
    return questionList.size();

How it was before Now instead of lot of cards blank screen

【问题讨论】:

    标签: android android-recyclerview onclicklistener oncheckedchanged


    【解决方案1】:

    要一次加载所有问题,您应该将它们添加到您的活动中并将它们添加到您的问题列表中

    questionList.addAll(dbHelper.getAllQuestions());
    adapter.notifyDataSetChanged();//to refresh view and show items ;-)
    

    如果你想在你的适配器定义中获得点击监听器,你可以使用监听器,

    【讨论】:

    • 感谢您的回复。我对这个问题做了一些修改,试图简化它,现在只指出一个问题。我的活动是空的,RecycleView 没有填充数据库中的问题。
    【解决方案2】:

    在您的 preparequestion() 方法中 更改adapter.notifyDataSetChanged();

    adapter = new QuestionAdapter (getActivity(), questionList);
    recyclerView.setAdapter(adapter);
    

    【讨论】:

    • adapter = new QuestionAdapter (getApplicationContext(), questionList); recyclerView.setAdapter(适配器); //非常感谢,成功了。
    猜你喜欢
    • 1970-01-01
    • 2020-08-14
    • 2012-09-15
    • 2017-07-06
    • 2010-11-22
    • 2017-06-10
    • 2012-12-08
    • 2016-09-27
    • 2017-03-04
    相关资源
    最近更新 更多