繁体   English   中英

Recycler View 的项目未显示

[英]Items of Recycler View is not showing

我的回收站视图中的项目未显示。 从 Firebase 检索项目。 没有任何错误消息或警告。

我确实搜索了相关问题,但我找不到任何适合我的解决方案。 希望有人能纠正我的问题,谢谢。

以下是代码:

Layout of the recycler view data:

<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"

android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
app:cardElevation="5dp"
android:elevation="5dp"
android:layout_margin="5dp">

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:layout_margin="5dp">

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="29 November 2020"
            android:textColor="@color/date_color"
            android:textAppearance="?android:textAppearanceSmall"
            android:textStyle="bold"
            android:id="@+id/date_txt_income"
            />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="2">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Type"
            android:maxLines="1"
            android:textColor="@android:color/black"
            android:textAppearance="?android:textAppearanceSmall"
            android:id="@+id/type_txt_income"
            />

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Note"
            android:maxLines="1"
            android:textColor="@android:color/black"
            android:textAppearance="?android:textAppearanceSmall"
            android:layout_below="@+id/type_txt_income"
            android:id="@+id/note_txt_income"
            />

    </RelativeLayout>

    <RelativeLayout
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_weight="1">

        <TextView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="2000"
            android:textColor="@color/date_color"
            android:textAppearance="?android:textAppearanceSmall"
            android:textStyle="bold"
            android:id="@+id/amount_txt_income"
            />

    </RelativeLayout>

</LinearLayout>

</android.support.v7.widget.CardView>


Layout that shows the recycler view items:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="#FFF1F3FC"
tools:context=".IncomeFragment">

<android.support.v7.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    app:cardElevation="5dp"
    android:elevation="10dp">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:layout_margin="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:textAppearance="?android:textAppearanceMedium"
                android:textColor="@android:color/black"
                android:text="Income"
                />

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="3"
            android:gravity="center"
            android:layout_margin="10dp">

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:id="@+id/income_txt_result"
                android:textAppearance="?android:textAppearanceMedium"
                android:textColor="@android:color/black"
                android:text="0.00"
                />

        </RelativeLayout>

    </LinearLayout>

</android.support.v7.widget.CardView>

<android.support.v7.widget.RecyclerView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/recycler_id_income">



</android.support.v7.widget.RecyclerView>
The java file:

public class IncomeFragment extends Fragment {

//Firebase
private FirebaseAuth mAuth;
private DatabaseReference mIncomeDatabase;

//RecyclerView
private RecyclerView recyclerView;
private FirebaseRecyclerAdapter adapter;



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    View myview = inflater.inflate(R.layout.fragment_income, container, false);

    mAuth = FirebaseAuth.getInstance();

    FirebaseUser mUser = mAuth.getCurrentUser();
    String uid = mUser.getUid();

    mIncomeDatabase = FirebaseDatabase.getInstance().getReference().child("IncomeData").child(uid);

    recyclerView = myview.findViewById(R.id.recycler_id_income);

    LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());

    layoutManager.setReverseLayout(true);
    layoutManager.setStackFromEnd(true);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(layoutManager);
    return myview;
}

@Override
public void onStart() {
    super.onStart();

    FirebaseRecyclerOptions<Data> options = new FirebaseRecyclerOptions.Builder<Data>()
            .setQuery(mIncomeDatabase, Data.class)
            .build();

    adapter = new FirebaseRecyclerAdapter<Data, MyViewHolder>(options) {

        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
            return new MyViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.income_recycler_data, parent, false));
        }

        protected void onBindViewHolder(MyViewHolder holder, int position, @NonNull Data model) {
            holder.setAmount(model.getAmount());
            holder.setType(model.getType());
            holder.setNote(model.getNote());
            holder.setDate(model.getDate());
        }
    };

    recyclerView.setAdapter(adapter);
}
}


class MyViewHolder extends RecyclerView.ViewHolder {
View mView;

public MyViewHolder(@NonNull View itemView) {
    super(itemView);
    mView = itemView;
}

void setType(String type) {
    TextView mType = mView.findViewById(R.id.type_txt_income);
    mType.setText(type);
}

void setNote(String note) {

    TextView mNote = mView.findViewById(R.id.note_txt_income);
    mNote.setText(note);
}

void setDate(String date) {
    TextView mDate = mView.findViewById(R.id.date_txt_income);
    mDate.setText(date);
}

void setAmount(double amount) {
    TextView mAmount = mView.findViewById(R.id.amount_txt_income);
    String strAmount = String.valueOf(amount);
    mAmount.setText(strAmount);
}

}

Data.java:

public class Data {

private double amount;
private String type;
private String note;
private String id;

public Data(double amount, String type, String note, String id, String date) {
    this.amount = amount;
    this.type = type;
    this.note = note;
    this.id = id;
    this.date = date;
}

public double getAmount() {
    return amount;
}

public void setAmount(double amount) {
    this.amount = amount;
}

public String getType() {
    return type;
}

public void setType(String type) {
    this.type = type;
}

public String getNote() {
    return note;
}

public void setNote(String note) {
    this.note = note;
}

public String getId() {
    return id;
}

public void setId(String id) {
    this.id = id;
}

public String getDate() {
    return date;
}

public void setDate(String date) {
    this.date = date;
}

private String date;

public Data(){

}

}

抱歉格式不合适。

@Ryx 您缺少对方法的调用adapter.startListening(); adapter.stopListening(); . 我认为这就是为什么你没有得到结果。 您还可以查看文档如果您仍然遇到问题,请首先创建自己的适配器并尝试端到端运行您的代码,然后使用 Firebase-ui

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM