我的应用程序中有一个 recyclerview,但它只在我退出并重新进入活动后加载数据。我已经尝试了下面的线程,但无法让我的工作。
RecyclerView 在我第一次进入活动时未填充,但在我退出并重新进入活动后显示
我试过了,
adapter.notifyDataSetChanged()
仍然没有工作
主要活动
public class Review1 extends AppCompatActivity {
private RecyclerView recent_patients_list;
private FirebaseAuth mAuth;
public static final String REVIEW_ID ="review_id";
FirebaseRecyclerAdapter<Patients, PatientsViewHolder> adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_review1);
///Firebase Authentication
mAuth = FirebaseAuth.getInstance();
FirebaseUser mUser = mAuth.getCurrentUser();
String uId = mUser.getUid();
Query query = FirebaseDatabase.getInstance().getReference().child("Patients").child(uId).limitToLast(50);
query.keepSynced(true);
recent_patients_list = findViewById(R.id.recycler);
recent_patients_list.setHasFixedSize(true);
///FirebaseUI RecyclerView
FirebaseRecyclerOptions<Patients> options =
new FirebaseRecyclerOptions.Builder<Patients>()
.setQuery(query, Patients.class)
.build();
adapter = new FirebaseRecyclerAdapter<Patients, PatientsViewHolder>(options) {
@Override
protected void onBindViewHolder(@NonNull PatientsViewHolder holder, final int position, @NonNull Patients model) {
holder.setTitle(model.getName());
holder.setNote(model.getResidence());
holder.setNote1(model.getOccupation());
holder.setDate(model.getDate());
//To get the id and pass to Review2
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String user_id = getRef(position).getKey(); //// get key to use in Review2.java
Intent intent = new Intent(getApplicationContext(),Review2.class);
intent.putExtra(REVIEW_ID, user_id);/// pass key into intent
startActivity(intent);
}
});
}
@NonNull
@Override
public PatientsViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext())
.inflate(R.layout.patient_listview,viewGroup,false);
return new PatientsViewHolder(view);
}
};
recent_patients_list.setLayoutManager(new LinearLayoutManager(this));
recent_patients_list.setAdapter(adapter);///setting adapter for the recyclerView
adapter.startListening();
adapter.notifyDataSetChanged();
}
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
adapter.notifyDataSetChanged();
}
////ViewHolder for firebase recycler view
private class PatientsViewHolder extends RecyclerView.ViewHolder {
View mView;
public PatientsViewHolder(@NonNull View itemView) {
super(itemView);
mView = itemView;
}
public void setTitle(String title){
TextView mTitle = mView.findViewById(R.id.Title);
mTitle.setText("Name:" + title);
}
public void setNote(String note){
TextView mNote = mView.findViewById(R.id.other);
mNote.setText("Location:" + note);
}
void setNote1(String note1){
TextView mNote1 = mView.findViewById(R.id.other2);
mNote1.setText("Occupation" +note1);
}
public void setDate(String date){
TextView mDate = mView.findViewById(R.id.date);
mDate.setText(date);
}
}
}
有什么遗漏吗?有什么建议或想法吗?