稍后初始化要传递的变量时,如何在onCreate中设置回收器视图适配器?

问题描述 投票:0回答:2
@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    recyclerView= findViewById(R.id.recyclerview_student);
    final StudentAdapter adapter= new StudentAdapter(this);
    recyclerView.setAdapter(adapter);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    buttonAddTask=findViewById(R.id.Fbutton_add);
    buttonAddTask.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent= new Intent(MainActivity.this, addStudent.class);
            startActivity(intent);
        }
    });

    getStudents();
}

这是主要活动

@ Override

     protected void onPostExecute(List<Student> student) {
            super.onPostExecute(student);
            Log.e("size","student adapter check");
             StudentAdapter adapter= new StudentAdapter(MainActivity.this, student);
            Log.e("adapter","NULL check");
             recyclerView.setAdapter(adapter);

        }

这是onPostExecute

public StudentAdapter(Context mCtx, List<Student> studentList) {
    this.mCtx = mCtx;
    this.studentList = studentList;
}

和此适配器的构造函数

我想做的是从onCreate初始化此构造函数。但是我不能这样做,因为一开始列表是空的。因为我在使用异步任务的函数中获取列表(房间db)的数据。但是,如果我在onPost()中设置了适配器,则该应用程序将无法工作,表明未设置适配器。

android android-recyclerview adapter android-room
2个回答
0
投票

在适配器中创建函数,如

    public void setData(List<Student> studentList){
this.studentList=studentList;
notifyDataSetChanged();
}

此后,一旦您从数据库中获取数据,请设置类似的内容>>

adapter.setData(studentList);

这就是您需要做的全部。


0
投票

在onCreate中,使用空的arrayList创建适配器(不为null),并使用回收站视图进行绑定。

© www.soinside.com 2019 - 2024. All rights reserved.