You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 14:45:33