2017-08-10 82 views
0

我想在Cardview上顯示我的數據從我的數據庫。它正在工作,但不是在單張卡片上顯示數據,而是將所有數據組合在一張卡片中。這可能是什麼原因?Android - 顯示從firebase的cardview數據

這是我的火力地堡數據庫的外觀:Firebase

這是它的外觀:

enter image description here

<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); 

    } 
} 

} 
+0

您可以添加您的佈局文件和代碼以顯示數據嗎? –

+0

是的,我編輯了我的問題代碼 – John

回答

0

我認爲問題出在你的火力JSON格式 - 你存儲不是數組元素的,你存儲AA一個大對象(用戶)與多個子領域,所以它返回到你所有的對象都是一個大對象。

我以前也遇到同樣的問題,所以我強烈建議你找一些firebase,這是(在我看來)不正確的方式來存儲複雜的對象(如一對多的關係或內部數組,因爲你想擁有),因爲它實際上沒有數據庫,它只是保存你的json。

此外,它不允許您執行任何類型的搜索或查詢。

所以,我的答案是:我firebase的原因,將其更改爲普通的sql(或noSql)數據庫的普通服務器。

+0

Firebase是一個noSql數據庫 – John