-1

我創建了一個回收站鑑於我fragment_add_friends.xml像下面如何從Firebase將所有用戶檢索到片段?

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

和我創建all_user_display_layout.xml文件顯示每個用戶像下面

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

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

     <de.hdodenhof.circleimageview.CircleImageView 
      android:id="@+id/all_user_image"> 

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

      <TextView 
       android:id="@+id/all_user_name" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="full name"/> 

      <TextView 
       android:id="@+id/all_user_status" 
       android:layout_width="match_parent" 
       android:layout_height="wrap_content" 
       android:text="user status"/> 

     </LinearLayout> 

    </LinearLayout> 

</LinearLayout> 

在我AddFriendsFragment.java我喜歡下面的回收觀點在我上創建視圖方法

@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     View v = inflater.inflate(R.layout.fragment_add_friends, container, false); 

     all_user_list = (RecyclerView) v.findViewById(R.id.all_user_list); 
     all_user_list.setHasFixedSize(true); 
     all_user_list.setLayoutManager(new LinearLayoutManager(getActivity())); 

     return v; 
    } 

和我已經創建了一個有一個字符串名稱,狀態 形象,有干將setter和構造函數和空construcor,因爲我要檢索這些數據和XML文件那些東西是all_user_display_layout.xml

和我的數據庫引用一個輔助類像下面

databaseReference = FirebaseDatabase.getInstance().getReference().child("users"); 

和我創建onViewCreated方法如下面

@Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 


    } 

之後是什麼,我必須做的,從 fireabse獲取數據到回收鑑於事情

請幫助我即時通訊新的這些東西

database structure

+0

請分享您的數據庫結構和您要顯示的確切記錄。 –

+0

我包括具有名稱,圖像和狀態的佈局文件,並且包含我的數據庫結構Sir – HemalHerath

回答

2

假設users節點是你的火力地堡數據庫根的直接子,拿到nameimagestatus,請使用如下代碼:

DatabaseReference rootRef = FirebaseDatabase.getInstance().getReference(); 
DatabaseReference usersRef = rootRef.child("users"); 
ValueEventListener eventListener = new ValueEventListener() { 
    @Override 
    public void onDataChange(DataSnapshot dataSnapshot) { 
     List <String> list = new ArrayList<>(); 
     for(DataSnapshot ds : dataSnapshot.getChildren()) { 
      String name = ds.child("name").getValue(String.class); 
      String image = ds.child("image").getValue(String.class); 
      String status = ds.child("status").getValue(String.class); 
      list.add(name + "/" + image + "/" + status); 
      Log.d("TAG", name + "/" + image + "/" + status); 
     } 
     Log.d("TAG", list); 
    } 

    @Override 
    public void onCancelled(DatabaseError databaseError) {} 
}; 
usersRef.addListenerForSingleValueEvent(eventListener); 

你的輸出將是:

Hemal/https.../Busy 
Jake Stewart/https.../Busy 
+0

是的,它的工作就像那謝謝先生我如何設置這些值到XML文件,如果你可以請幫我一下將非常感謝 – HemalHerath

+0

@HemalHerath其非常簡單的商店,在** POJO類的** Arraylist ** ** – Prem

+0

好吧,先生,我會盡力感謝您的幫助 – HemalHerath

1

從onCreateView

all_user_list = (RecyclerView) v.findViewById(R.id.all_user_list); 
all_user_list.setHasFixedSize(true); 
all_user_list.setLayoutManager(new LinearLayoutManager(getActivity())); 

在onViewCreated

@Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
     super.onViewCreated(view, savedInstanceState); 

    FirebaseRecyclerViewAdapter<<Your-Helper-Class>, ViewHolder> adapter; 
    ref = new Firebase("https://<yourapp>.firebaseio.com"); 

    RecyclerView recycler = (RecyclerView) findViewById(R.id.all_user_list); 
    recycler.setHasFixedSize(true); 
    recycler.setLayoutManager(new LinearLayoutManager(getActivity())); 

    adapter = new FirebaseRecyclerViewAdapter<<Your-Helper-Class>, ViewHolder>(<Your-Helper-Class>.class, android.R.layout.all_user_display_layout.xml, ViewHolder.class, mRef) { 
     public void populateViewHolder(ViewHolder viewHolder, <Your-Helper-Class> helper) { 
      Picasso.with(context).load(helper.getImage()).into(viewHolder.image); 
      viewHolder.name.setText(helper.getName()); 
      viewHolder.status.setText(helper.getStatus()); 
     } 
    }; 
    recycler.setAdapter(mAdapter); 
    } 



    private static class ViewHolder extends RecyclerView.ViewHolder { 
     CircleImageView image; 
     TextView name; 
     TextView status; 

     public ChatMessageViewHolder(View itemView) { 
      super(itemView); 
      image = (TextView)itemView.findViewById(android.R.id.all_user_image); 
      name = (TextView)itemView.findViewById(android.R.id.all_user_name); 
      status = (TextView) itemView.findViewById(android.R.id.all_user_status); 
     } 
    } 

刪除這些行添加以下代碼此外,在imageview的使用畢加索加載圖像。在build.gradle中添加這些行。

compile 'com.squareup.picasso:picasso:2.5.2'

+0

我不能使用像這樣recycler.setLayoutManager(新的LinearLayoutManager(this)); – HemalHerath

+0

和我沒有populateViewholder覆蓋方法只有onBindViewHolder和onCreateViewHolder – HemalHerath

+0

添加此build.gradle編譯'com.firebaseui:firebase-ui-database:3.1.0' – kunwar97

相關問題