我想使用 GeoFire 在 android 中填充 Firebase Recycler View
Posted
技术标签:
【中文标题】我想使用 GeoFire 在 android 中填充 Firebase Recycler View【英文标题】:i want to use GeoFire to Populate Firebase Recycler View in android 【发布时间】:2020-09-03 10:17:39 【问题描述】:我正在构建一个约会应用程序,我想在用户位置附近找到人,所以我使用 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();
我在这里搜索了很多,我没有找到任何解决方案
【问题讨论】:
【参考方案1】:FirebaseUI 中的适配器旨在直接从 Firebase 实时数据库或 Cloud Firestore 加载数据。它们没有与 GeoFire/GeoFirestore 集成。
如果您想根据地理查询显示数据,则必须构建自己的适配器。当onKeyEntered
触发时,您会将密钥(或其关联数据)添加到List
,然后在使用该列表初始化的适配器上调用notifyDataSetChanged
。
如果您以前曾构建过自定义适配器,那几乎都是一样的。如果您之前没有构建过,我建议您关注tutorial 以熟悉它。之后,您可以使用 FirebaseUI 适配器的代码来获得(复制/粘贴)灵感。
【讨论】:
以上是关于我想使用 GeoFire 在 android 中填充 Firebase Recycler View的主要内容,如果未能解决你的问题,请参考以下文章
geofire android 存储和检索位置并将其显示在地图上