Java 使用FirebaseRecyclerAdapter的RecyclerView未显示项目-FirebaseUI(3.1.3)
我一直在开发我的应用程序,我希望有一个片段,显示建议的用户(显示数据库中的一些用户Java 使用FirebaseRecyclerAdapter的RecyclerView未显示项目-FirebaseUI(3.1.3),java,android,firebase,android-recyclerview,firebaseui,Java,Android,Firebase,Android Recyclerview,Firebaseui,我一直在开发我的应用程序,我希望有一个片段,显示建议的用户(显示数据库中的一些用户子(“用户”),但当我设置我的回收视图时,不会显示任何项目(配置文件) 下面是我的片段布局: RecyclerView就在建议用户下方。它不显示任何数据, 以下是我的XML项目: <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android
子(“用户”)
,但当我设置我的回收视图
时,不会显示任何项目(配置文件)
下面是我的片段布局:
RecyclerView
就在建议用户下方。它不显示任何数据,
以下是我的XML项目:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
xmlns:app="http://schemas.android.com/apk/res-auto">
<LinearLayout
android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<de.hdodenhof.circleimageview.CircleImageView
android:layout_width="@dimen/_60sdp"
android:src="@drawable/profile"
android:id="@+id/user_in_list_image"
app:border_color="#fff"
android:layout_margin="@dimen/_10sdp"
app:border_width="3dp"
android:layout_height="@dimen/_60sdp" />
<LinearLayout
android:orientation="vertical"
android:layout_gravity="center"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:text="User203"
android:textStyle="bold"
android:id="@+id/user_in_list_username"
android:textSize="@dimen/_14sdp"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<TextView
android:text="El Eulma, Algeria"
android:textSize="@dimen/_12sdp"
android:id="@+id/user_in_list_info"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
<com.like.LikeButton
android:id="@+id/user_in_list_followButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
app:icon_size="@dimen/_16sdp"
app:is_enabled="true"
app:icon_type="thumb" />
</LinearLayout>
<RelativeLayout
android:layout_gravity="center"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<com.like.LikeButton
android:layout_marginRight="@dimen/_30sdp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
app:icon_size="@dimen/_16sdp"
android:layout_gravity="center|end"
app:is_enabled="true"
app:icon_type="heart" />
</RelativeLayout>
</LinearLayout>
</FrameLayout>
这是我的ViewHolder
java.class:
public class User {
public String name;
public String gender;
public String birthday;
public String work;
public String country;
public String language;
public String city;
public String postal;
public User() {
// Default constructor required for calls to DataSnapshot.getValue(User.class)
}
public User(String name ,String gender, String birthday, String work , String country,String language , String city ,String postal) {
this.name = name;
this.gender = gender;
this.birthday = birthday;
this.work = work;
this.country = country;
this.language = language;
this.city = city;
this.postal = postal;
}
public String getName() { return name; }
public String getGender() { return gender; }
public String getBirthday() { return birthday; }
public String getWork() { return work; }
public String getCountry() { return country; }
public String getLanguage() { return language; }
public String getCity() { return city; }
public String getPostal() { return postal; }
}
public class users_holder extends RecyclerView.ViewHolder{
private static final String TAG = users_holder.class.getSimpleName();
public TextView userName,userInfo;
public CircleImageView userImage;
public com.like.LikeButton likeButton;
public users_holder(View itemView) {
super(itemView);
userName= itemView.findViewById(R.id.user_in_list_username);
userInfo = itemView.findViewById(R.id.user_in_list_info);
userImage = itemView.findViewById(R.id.user_in_list_image);
likeButton = itemView.findViewById(R.id.user_in_list_followButton);
}
}
这是我的framgent.javaonCreateView
:
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
View view = inflater.inflate(R.layout.fragment_discover, container, false);
if (mListener != null) {
mListener.onFragmentInteraction("Discover");
}
mUser = FirebaseAuth.getInstance().getCurrentUser();
mUid = mUser.getUid();
mDatabase = FirebaseDatabase.getInstance();
mDatabaseref = mDatabase.getReference().child("users");
suggestedRecycler = view.findViewById(R.id.Suggested_users_recycler);
mLayoutManager = new LinearLayoutManager(getContext());
suggestedRecycler.setLayoutManager(mLayoutManager);
FirebaseRecyclerOptions<User> options = new FirebaseRecyclerOptions.Builder<User>()
.setQuery(mDatabaseref, User.class).build();
FirebaseRecyclerAdapter<User, users_holder> adapter = new FirebaseRecyclerAdapter<User, users_holder>(options) {
@Override
protected void onBindViewHolder(@NonNull users_holder holder, int position, @NonNull User model) {
holder.userName.setText(model.getName());
holder.userInfo.setText(model.getCity() + ", " + model.getCountry());
}
@Override
public users_holder onCreateViewHolder(ViewGroup parent, int viewType) {
// Create a new instance of the ViewHolder, in this case we are using a custom
// layout called R.layout.message for each item
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.user_in_list, parent, false);
return new users_holder(view);
}
};
suggestedRecycler.setAdapter(adapter);
return view;
}
public View onCreateView(布局、充气机、视图组容器、,
Bundle savedInstanceState){
//为该碎片膨胀布局
视图=充气机。充气(R.layout.fragment\u discover,container,false);
if(mListener!=null){
mListener.onFragmentInteraction(“发现”);
}
mUser=FirebaseAuth.getInstance().getCurrentUser();
mUid=mUser.getUid();
mDatabase=FirebaseDatabase.getInstance();
mDatabaseref=mDatabase.getReference().child(“用户”);
suggestedRecycler=view.findViewById(R.id.Suggested\u users\u recycler);
mLayoutManager=newlinearlayoutmanager(getContext());
suggestedRecycler.setLayoutManager(mLayoutManager);
FirebaseRecyclerOptions选项=新建FirebaseRecyclerOptions.Builder()
.setQuery(mDatabaseref,User.class).build();
FirebaseRecyclerAdapter=新的FirebaseRecyclerAdapter(选项){
@凌驾
受保护的void onBindViewHolder(@NonNull用户\u holder holder,int位置,@NonNull用户模型){
holder.userName.setText(model.getName());
holder.userInfo.setText(model.getCity()+”,“+model.getCountry());
}
@凌驾
公共用户\u holder onCreateViewHolder(视图组父级,int-viewType){
//创建ViewHolder的新实例,在本例中,我们使用自定义
//为每个项目调用R.layout.message的布局
View=LayoutInflater.from(parent.getContext())
.充气(R.layout.user\u在\u列表中,父项,false);
返回新用户\u持有者(视图);
}
};
suggestedRecycler.setAdapter(适配器);
返回视图;
}
我做错了什么?当你必须在外部类中设置自适应r时,我看到其他版本也很好,谢谢
彼得·哈达德的答案在这里对我很有用:
,因此您需要使用以下选项:
由于FirebaseListAdapter
使用侦听器检查firebase数据库中的更改,因此要侦听数据,您需要在onStart()
中添加adapter.startListening()
,以便能够在listview中显示数据。
然后在onStop()
中,您可以使用adapter.stopstening()
从适配器中删除侦听器和数据
彼得·哈达德的答案在这里对我很有用:
,因此您需要使用以下选项:
由于FirebaseListAdapter
使用侦听器检查firebase数据库中的更改,因此要侦听数据,您需要在onStart()
中添加adapter.startListening()
,以便能够在listview中显示数据。
然后在
onStop()
中,您可以使用adapter.stopListening()
从适配器中删除侦听器和数据。是的,谢谢它的工作。是的,谢谢它的工作。
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.stopListening();
}