0

我的应用程序中有一个 recyclerview,但它只在我退出并重新进入活动后加载数据。我已经尝试了下面的线程,但无法让我的工作。

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);
        }
        }
}

有什么遗漏吗?有什么建议或想法吗?

4

1 回答 1

1

尝试使用:adapter.startListening();before ->并从中recent_patients_list.setAdapter(adapter);删除adapter.notifyDataSetChanged();onCreate

并修改你的onStart()喜欢:

@Override
    protected void onStart() {
        super.onStart();
    }

你在里面什么都不做onPause

于 2019-03-11T14:14:06.957 回答