【问题标题】:FirestoreRecyclerView is not displaying data from Firestore DB after activity restart活动重启后,Firestore RecyclerView 不显示来自 Firestore 数据库的数据
【发布时间】:2021-12-22 17:28:21
【问题描述】:

我的在线投票应用程序有这个活动,它有一个基于 Firestore UI 的 RecyclerView,它显示我的所有数据,字段“registrationStatus”的值为“Pending”。在应用程序启动时,会显示数据,但是在通过与 RecyclerView 上的项目交互进入不同的活动之后,然后再次返回到上一个活动,数据没有显示,但是当我触摸空白的 RecyclerView 时,我可以仍然访问以前显示的数据。我似乎无法知道导致这种情况发生的位置和代码。如果你能帮我解决这个问题,那就太好了。

这是在应用程序的开头:

这是与 RecyclerView 中的项目交互后的活动:

现在回到之前的活动:

这是与 RecyclerView 相关的代码

public class AdminHomepage extends AppCompatActivity {

Button logOut;
FirebaseAuth mAuth = FirebaseAuth.getInstance();
FirebaseFirestore db = FirebaseFirestore.getInstance();
CollectionReference notebookRef = db.collection("Candidates");
RecyclerView recyclerView;
AdminCandidateAdapter adapter;

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

    //Buttons
    logOut = findViewById(R.id.adminLogOut);

    //Recycler View Things
    setUpRecyclerView();

    //Log-Out Button Tap
    logOut.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            mAuth.signOut();
            Toast.makeText(getApplicationContext(), "Logged Out Successfully", Toast.LENGTH_SHORT).show();
            startActivity(new Intent(getApplicationContext(), MainActivity.class));
            finish();
        }
    });

    //Click Listener for the RecyclerView
    adapter.setOnItemClickListener(new AdminCandidateAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(DocumentSnapshot documentSnapshot, int position) {
            AdminCandidateItem note = documentSnapshot.toObject(AdminCandidateItem.class);

            String name = note.getCandidateFullName();
            startActivity(new Intent(getApplicationContext(), EvaluateCandidate.class).putExtra("name", name));
        }
    });
}

private void setUpRecyclerView() {

    Query query = notebookRef.whereEqualTo("registrationStatus", "Pending").orderBy("candidateFullName", Query.Direction.ASCENDING);

    FirestoreRecyclerOptions<AdminCandidateItem> options = new FirestoreRecyclerOptions.Builder<AdminCandidateItem>()
            .setQuery(query, AdminCandidateItem.class)
            .build();

    adapter = new AdminCandidateAdapter(options);

    recyclerView = findViewById(R.id.candidateList);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));
    recyclerView.setAdapter(adapter);
    recyclerView.setItemAnimator(null);

}


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

@Override
protected void onStop() {
    super.onStop();
    adapter.stopListening();
}

【问题讨论】:

    标签: java android google-cloud-firestore android-recyclerview firebaseui


    【解决方案1】:

    所以我已经解决了我的问题。似乎 RecyclerView 无法显示这些项目,因为我已分配 RecyclerView 来包装其所有内容。通过分配自定义高度大小,现在即使在 Activity 重新启动后也会显示项目。

    这是高度变化前该部分的 XML 代码:

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/candidateList"
        android:layout_width="350dp"
        android:layout_height="wrap_content"
        android:layout_marginTop="10dp"
        android:background="@color/gray"
        android:paddingBottom="30dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView7" />
    

    这是高度变化后的代码:

    <androidx.recyclerview.widget.RecyclerView
        android:id="@+id/candidateList"
        android:layout_width="350dp"
        android:layout_height="300dp"
        android:layout_marginTop="10dp"
        android:background="@color/gray"
        android:paddingBottom="30dp"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/textView7" />
    

    所以我设置了一个 300dp 的自定义 layout_height 来为我的 RecyclerView 腾出空间

    这是更改后的活动:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-22
      • 2021-08-28
      • 2021-07-26
      • 1970-01-01
      • 2020-11-01
      • 1970-01-01
      • 2021-08-02
      • 2021-10-22
      相关资源
      最近更新 更多