繁体   English   中英

Android-在Firebase的Cardview上显示数据

[英]Android - Displaying data on cardview from firebase

我试图在Cardview上显示数据库中的数据。 它正在工作,但是不是将数据显示在单个卡上,而是将所有数据组合到一张卡中。 这可能是什么原因?

这是我的Firebase数据库的外观: 火力基地

它是这样的:

在此处输入图片说明

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

Card.xml(布局文件)

<LinearLayout
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical">

    <TextView
        android:id="@+id/text1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <TextView
        android:id="@+id/text2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1" />

    <TextView
        android:id="@+id/text3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />
</LinearLayout>

片段类:

public class HistoryFragment extends Fragment {

RecyclerView recyclerView;
DatabaseReference myRef;
FirebaseAuth mAuth;


@Override

public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_history, container, false);

    mAuth = FirebaseAuth.getInstance();
    final FirebaseUser user = mAuth.getCurrentUser();


    myRef = FirebaseDatabase.getInstance().getReference().child("Users").child(user.getDisplayName());

    recyclerView = (RecyclerView) rootView.findViewById(R.id.recyclerview);
    recyclerView.setHasFixedSize(true);
    recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));

    FirebaseRecyclerAdapter<Bet, BetViewHolder> adapter = new FirebaseRecyclerAdapter<Bet, BetViewHolder>(
            Bet.class,
            R.layout.history_individual_row,
            BetViewHolder.class,
            myRef
    ) {
        @Override
        protected void populateViewHolder(BetViewHolder viewHolder, Bet model, int position) {
            viewHolder.setTextDescription(model.desc());
            viewHolder.setTitle(model.title());
            viewHolder.setTextFlow(model.flow());
        }
    };

    recyclerView.setAdapter(adapter);


    return rootView;
}

public static class BetViewHolder extends RecyclerView.ViewHolder {
    TextView text1View, text2View, text3View;

    public BetViewHolder(View itemView) {
        super(itemView);
        text1View= (TextView) itemView.findViewById(R.id.text1);
        text2View= (TextView) itemView.findViewById(R.id.text2);
        text3View= (TextView) itemView.findViewById(R.id.text3);
    }

    public void setTextDescription(String desc) {
        text1View.setText(desc);
    }


    public void setTitle(String title) {
        text2View.setText(title);
    }

    public void setTextFlow(String flow) {
        text3View.setText(flow);

    }
}

}

我认为问题出在您的firebase json格式中-您存储元素数组 ,而是存储一个具有多个子字段的大对象(用户),因此它作为一个大对象返回给您所有对象。

我以前也遇到过同样的问题,所以这就是为什么我强烈建议您找到其他的Firebase,(我认为)这不是存储复杂对象(如一对多关系或内部数组,如您想拥有),因为它实际上没有数据库,它只是保存您的json。

另外,它不允许您实现任何类型的搜索或查询。

因此,我的答案是:我启动Firebase的原因是,将其更改为具有常规sql(或noSql)数据库的常规服务器。

暂无
暂无

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

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