-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

相关问题