如何从Firebase将所有用户检索到片段?
我创建了一个回收站鉴于我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获取数据到回收鉴于事情
请帮助我即时通讯新的这些东西
假设users
节点是你的火力地堡数据库根的直接子,拿到name
,image
和status
,请使用如下代码:
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
是的,它的工作就像那谢谢先生我如何设置这些值到XML文件,如果你可以请帮我一下将非常感谢 – HemalHerath
@HemalHerath其非常简单的商店,在** POJO类的** Arraylist ** ** – Prem
好吧,先生,我会尽力感谢您的帮助 – HemalHerath
从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'
我不能使用像这样recycler.setLayoutManager(新的LinearLayoutManager(this)); – HemalHerath
和我没有populateViewholder覆盖方法只有onBindViewHolder和onCreateViewHolder – HemalHerath
添加此build.gradle编译'com.firebaseui:firebase-ui-database:3.1.0' – kunwar97
请分享您的数据库结构和您要显示的确切记录。 –
我包括具有名称,图像和状态的布局文件,并且包含我的数据库结构Sir – HemalHerath