【发布时间】:2021-11-06 23:18:03
【问题描述】:
我对 android 开发和整个 Firestore 还很陌生,我在项目中遇到了一个我找不到太多解决方案的障碍,所以我想知道是否可以寻求一些指导。
我正在制作一个 android 应用程序,用户可以在其中跟随或创建自己的远足,到目前为止,我将远足路线本身存储在填充 recyclerView 的 firestore 中,使用 firebase Auth 注册和登录的用户系统等,这些都在各自的收藏中,如下图,
(我无法发布图片,所以我只能发送链接) Users collection Routes collection
如果可能的话,我想要实现的目标是让用户拥有“最喜欢的路线”列表 理想情况下,您可以在回收站视图上按下一个按钮,将路线保存到他们的帐户中作为最爱,我是只是不确定如何处理这种实现。
回收站视图
public class RouteListerActivity extends AppCompatActivity {
public RouteViewModel routeViewModel;
private FirebaseFirestore db = FirebaseFirestore.getInstance();
private CollectionReference routeRef = db.collection("Routes");
private routeRvAdapter adapter;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_route_lister);
InitRecyclerView();
}
private void InitRecyclerView() {
Query query = routeRef.orderBy("routeName", Query.Direction.DESCENDING);
FirestoreRecyclerOptions<Route> options = new FirestoreRecyclerOptions.Builder<Route>()
.setQuery(query, Route.class)
.build();
adapter = new routeRvAdapter(options);
RecyclerView recyclerView = findViewById(R.id.recyclerView);
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setAdapter(adapter);
adapter.setOnItemClickListener(new routeRvAdapter.OnItemClickListener() {
@Override
public void onItemClicked(DocumentSnapshot snapshot, int position) {
Route route = snapshot.toObject(Route.class);
List<Point> listP = route.getRoutePoints();
Intent intent = new Intent(RouteListerActivity.this, RouteActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("Route", route);
intent.putExtras(bundle);
startActivity(intent);
}
});
new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0,ItemTouchHelper.LEFT
| ItemTouchHelper.RIGHT) {
@Override
public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
return false;
}
@Override
public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
adapter.deleteRoute(viewHolder.getAbsoluteAdapterPosition());
Toast.makeText(RouteListerActivity.this, "Route Has Been Deleted.", Toast.LENGTH_SHORT).show();
}
}).attachToRecyclerView(recyclerView);
}
@Override
protected void onStart() {
super.onStart();
adapter.startListening();
}
@Override
protected void onStop() {
super.onStop();
adapter.startListening();
}
}
最诚挚的问候!
【问题讨论】:
-
这段代码中到底有什么不符合您的预期?告诉我们共享代码有什么问题。你有什么错误吗?
标签: android firebase google-cloud-firestore android-recyclerview