@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()中设置了适配器,则该应用程序将无法工作,表明未设置适配器。
在适配器中创建函数,如
public void setData(List<Student> studentList){
this.studentList=studentList;
notifyDataSetChanged();
}
此后,一旦您从数据库中获取数据,请设置类似的内容>>
adapter.setData(studentList);
这就是您需要做的全部。
在onCreate中,使用空的arrayList创建适配器(不为null),并使用回收站视图进行绑定。