RecyclerView仅显示首个条目求助(常规方案无效)
问题:Firestore数组中的两个值仅在RecyclerView显示第一个条目
已确认Firestore数据库数组中存储了2个值,但RecyclerView仅展示位置0的首个条目,尝试过修改layout_height为wrap_content等常规方案均无效。
ActivityOs代码
private FirestoreAdapter listAdapter; private FirebaseFirestore db = FirebaseFirestore.getInstance(); private CollectionReference osRef = db.collection("cliente"); private DocumentReference docRef = osRef.document("clienteTeste"); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_os); RecyclerView recyclerView = findViewById(R.id.recyclerViewOs); /*docRef.get().addOnCompleteListener(task -> { if (task.isSuccessful()) { DocumentSnapshot document = task.getResult(); if (document.exists()) { Log.e("RESULTADO","result:" + document.toString()); } } });*/ Query query = osRef.orderBy("serviceOrder", Query.Direction.ASCENDING); FirestoreRecyclerOptions<ServiceDocument> options = new FirestoreRecyclerOptions.Builder<ServiceDocument>() .setQuery(osRef, ServiceDocument.class) .build(); listAdapter = new FirestoreAdapter(options); recyclerView.setHasFixedSize(true); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setAdapter(listAdapter); listAdapter.notifyDataSetChanged(); } @Override protected void onStart() { super.onStart(); listAdapter.startListening(); } @Override protected void onStop() { super.onStop(); listAdapter.stopListening(); }
注释代码已验证数据库确实返回2个值
Adapter类代码
public class FirestoreAdapter extends FirestoreRecyclerAdapter<ServiceDocument, FirestoreAdapter.ViewHolder> { public FirestoreAdapter(@NonNull FirestoreRecyclerOptions<ServiceDocument> options) { super(options); } @Override protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull ServiceDocument model) { holder.osIdItem.setText(String.valueOf(model.serviceOrderArray.get(position).getId())); holder.osClientItem.setText(model.serviceOrderArray.get(position).getClient().getName()); holder.osDateItem.setText(model.serviceOrderArray.get(position).getDate()); holder.osValueItem.setText(String.valueOf(model.serviceOrderArray.get(position).getTotalValue())); } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext()); View view = layoutInflater.inflate(R.layout.layout_os_item, parent, false); return new FirestoreAdapter.ViewHolder(view); } public class ViewHolder extends RecyclerView.ViewHolder { private TextView osIdItem; private TextView osClientItem; private TextView osDateItem; private TextView osValueItem; public ViewHolder(View itemView) { super(itemView); osIdItem = itemView.findViewById(R.id.osIDItem); osClientItem = itemView.findViewById(R.id.osClientNameItem); osDateItem = itemView.findViewById(R.id.osDateItem); osValueItem = itemView.findViewById(R.id.osValueItem); } } }
activity_os.xml布局
<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/activity_os" xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginBottom="0dp" android:background="@color/white" tools:context="com.leonardomaito.autocommobile.activities.OsActivity"> <include android:id="@+id/include" layout="@layout/layout_header_search" /> <androidx.constraintlayout.widget.Guideline android:id="@+id/glRecyclerLimit" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal" app:layout_constraintGuide_begin="124dp" /> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerViewOs" android:layout_width="match_parent" android:layout_height="wrap_content" android:minHeight="650dp" app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/glRecyclerLimit" app:layout_constraintVertical_bias="0.0" tools:listitem="@layout/layout_os_item" /> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/btNewOs" android:layout_width="wrap_content" android:layout_height="wrap_content" android:contentDescription="Inserir OS" android:onClick="createNewOs" android:src="@drawable/custom_plus_icon" app:backgroundTint="@color/autocom_blue" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.98" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="@+id/glRecyclerLimit" app:layout_constraintVertical_bias="0.988" app:rippleColor="@color/autocom_blue" /> </androidx.constraintlayout.widget.ConstraintLayout>
layout_os_item.xml布局
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="wrap_content" tools:showIn="@layout/activity_os" android:background="@drawable/custom_card_view"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginStart="10dp" android:layout_marginTop="5dp" android:layout_marginEnd="10dp" android:background="@drawable/custom_card_view"> <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" app:srcCompat="@drawable/custom_os_icon" android:paddingLeft="5dp"/> <TextView android:id="@+id/osIDItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:text="N 00000" android:textColor="@color/autocom_blue" android:textStyle="bold" app:layout_constraintEnd_toStartOf="@+id/osDateItem" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toEndOf="@+id/imageView" app:layout_constraintTop_toTopOf="parent" /> <TextView android:id="@+id/osDateItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textColor="@color/autocom_blue" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.943" app:layout_constraintStart_toEndOf="@+id/imageView" app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="0.222" /> <TextView android:id="@+id/osClientNameItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="8dp" android:textColor="@color/autocom_blue" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintStart_toEndOf="@+id/imageView" app:layout_constraintTop_toBottomOf="@+id/osIDItem" app:layout_constraintVertical_bias="0.111" /> <TextView android:id="@+id/osValueItem" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="1dp" android:text="R$ 10,000" android:textColor="@color/autocom_blue" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.791" app:layout_constraintStart_toEndOf="@+id/osClientNameItem" app:layout_constraintTop_toBottomOf="@+id/osDateItem" app:layout_constraintVertical_bias="0.0" /> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.cardview.widget.CardView>
当前效果

预期效果

目前首个条目显示正常,但数据库中的第二个条目未在RecyclerView中展示,寻求解决方案。
内容的提问来源于stack exchange,提问作者Leonardo Maito
相关产品推荐
相关产品推荐

