我想使用 GeoFire 在 android 中填充 Firebase Recycler 视图
i want to use GeoFire to Populate Firebase Recycler View in android
我正在构建一个约会应用程序,我想找到用户所在位置附近的人,所以我正在使用 geofire,但我不知道如何将它与回收器适配器一起使用
这是我的代码
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(mUsersDatabaseReference, Users.class)
.build();
FirebaseRecyclerAdapter<Users, UserViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Users,UserViewHolder>(options
) {
@NonNull
@Override
public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycle_list_single_user, parent, false);
return new UserViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull UserViewHolder userViewHolder, int i, @NonNull Users users) {
LinearLayout layout=userViewHolder.mView.findViewById(R.id.all);
if (users.getName()==null)layout.setVisibility(View.GONE);
else{
userViewHolder.setName(users.getName());
if(users.getOnline()!=null)userViewHolder.setUserOnline(users.getOnline());
userViewHolder.setStatus(users.getStatus());
userViewHolder.setImage(users.getImage(),getActivity().getApplicationContext(),users.getSex());
final String user_id=getRef(i).getKey();
final String userName=users.getName();
userViewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent profileIntent=new Intent(getContext(), ProfileActivity.class);
profileIntent.putExtra("user_id",user_id);
startActivity(profileIntent);
}
});
ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
if(i%3==1)
marginParams.setMargins(0, 150, 0, 0);
else if(i>5)
marginParams.setMargins(0, -150, 0, 0);
else if(i>2)
marginParams.setMargins(0, -100, 0, 0);
layout.setLayoutParams(marginParams);
}
}
};
mUsersList.setAdapter(firebaseRecyclerAdapter);
firebaseRecyclerAdapter.startListening();
}
}
我在这里搜索了很多,但没有找到任何解决方案
FirebaseUI 中的适配器旨在直接从 Firebase 实时数据库或 Cloud Firestore 加载数据。它们未与 GeoFire/GeoFirestore.
集成
如果您想显示基于地理查询的数据,您将必须构建自己的适配器。当 onKeyEntered
触发时,您会将密钥(或其相关数据)添加到 List
,然后在您使用该列表初始化的适配器上调用 notifyDataSetChanged
。
如果您以前构建过自定义适配器,那几乎都是一样的。如果您以前没有构建过,我建议您关注 tutorial 以熟悉它。之后,您可以使用 FirebaseUI 适配器的代码来获得 (copy/paste) 灵感。
我正在构建一个约会应用程序,我想找到用户所在位置附近的人,所以我正在使用 geofire,但我不知道如何将它与回收器适配器一起使用 这是我的代码
FirebaseRecyclerOptions<Users> options =
new FirebaseRecyclerOptions.Builder<Users>()
.setQuery(mUsersDatabaseReference, Users.class)
.build();
FirebaseRecyclerAdapter<Users, UserViewHolder> firebaseRecyclerAdapter=new FirebaseRecyclerAdapter<Users,UserViewHolder>(options
) {
@NonNull
@Override
public UserViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from(parent.getContext())
.inflate(R.layout.recycle_list_single_user, parent, false);
return new UserViewHolder(view);
}
@Override
protected void onBindViewHolder(@NonNull UserViewHolder userViewHolder, int i, @NonNull Users users) {
LinearLayout layout=userViewHolder.mView.findViewById(R.id.all);
if (users.getName()==null)layout.setVisibility(View.GONE);
else{
userViewHolder.setName(users.getName());
if(users.getOnline()!=null)userViewHolder.setUserOnline(users.getOnline());
userViewHolder.setStatus(users.getStatus());
userViewHolder.setImage(users.getImage(),getActivity().getApplicationContext(),users.getSex());
final String user_id=getRef(i).getKey();
final String userName=users.getName();
userViewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent profileIntent=new Intent(getContext(), ProfileActivity.class);
profileIntent.putExtra("user_id",user_id);
startActivity(profileIntent);
}
});
ViewGroup.MarginLayoutParams marginParams = new ViewGroup.MarginLayoutParams(ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);
if(i%3==1)
marginParams.setMargins(0, 150, 0, 0);
else if(i>5)
marginParams.setMargins(0, -150, 0, 0);
else if(i>2)
marginParams.setMargins(0, -100, 0, 0);
layout.setLayoutParams(marginParams);
}
}
};
mUsersList.setAdapter(firebaseRecyclerAdapter);
firebaseRecyclerAdapter.startListening();
}
}
我在这里搜索了很多,但没有找到任何解决方案
FirebaseUI 中的适配器旨在直接从 Firebase 实时数据库或 Cloud Firestore 加载数据。它们未与 GeoFire/GeoFirestore.
集成如果您想显示基于地理查询的数据,您将必须构建自己的适配器。当 onKeyEntered
触发时,您会将密钥(或其相关数据)添加到 List
,然后在您使用该列表初始化的适配器上调用 notifyDataSetChanged
。
如果您以前构建过自定义适配器,那几乎都是一样的。如果您以前没有构建过,我建议您关注 tutorial 以熟悉它。之后,您可以使用 FirebaseUI 适配器的代码来获得 (copy/paste) 灵感。