Android Firestore 过滤器回收视图
Posted
技术标签:
【中文标题】Android Firestore 过滤器回收视图【英文标题】:Android Firestore filter recyclerview 【发布时间】:2021-06-09 15:06:12 【问题描述】:我在 android Studio(Java) 中开发了一个“租车”Android 应用程序,我想为其添加一个新功能。我想添加到主页,其中显示所有可用汽车的按钮,该按钮打开一个新活动,用户可以在其中按多个标准过滤要向他显示的汽车(来自回收站视图)。例如:他可以选择燃料类型、座位数、牵引类型等。
我的问题是:如何将数据从 FilterCars 活动(用户过滤汽车)传递到 HomeFragment(显示所有汽车)?我是否需要自定义 RecyclerView 构建器才能处理复合查询?
编辑:假设我使用意图包将过滤器从 FilterCars.class 传递到 HomeFragment.class。但是如何在 HomeFragment 中应用这些过滤器呢?
现在 FragmentCars.class 是空的,因为我不知道如何将过滤器传递给 HomeFragment 以及如何在那里处理它们。这是 HomeFragment.class 代码(显示所有汽车):
public class HomeFragment extends Fragment
private RecyclerView recyclerView;
carAdapter adapter; // Create Object of the Adapter class
ImageButton btnSort;
private static ProgressBar progressBar;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState)
View view = inflater.inflate(R.layout.fragment_home,container,false);
Query query = FirebaseFirestore.getInstance().collection("Cars").orderBy("carName");
progressBar = (ProgressBar)view.findViewById(R.id.progressBarHome);
btnSort = (ImageButton) view.findViewById(R.id.btnSort);
recyclerView = view.findViewById(R.id.recycler1);
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
FirestoreRecyclerOptions<car> options = new FirestoreRecyclerOptions.Builder<car>()
.setQuery(query, car.class)
.build();
btnSort.setOnClickListener(new View.OnClickListener()
@Override
public void onClick(View v)
startActivity(new Intent(getContext(), FilterCars.class)); // Here we open the activity which contains all the filters
);
adapter = new carAdapter(options);
recyclerView.setAdapter(adapter);
return view;
public static void disableProgressBar()
progressBar.setVisibility(View.GONE);
@Override public void onStart()
super.onStart();
adapter.startListening();
// Function to tell the app to stop getting
// data from database on stoping of the activity
@Override public void onStop()
super.onStop();
adapter.stopListening();
【问题讨论】:
【参考方案1】:请阅读:https://developer.android.com/guide/fragments/communicate 它应该可以帮助你。
如果您真的想将过滤器作为一个 Activity,您还可以了解 startActivityForResult()。退房 : https://developer.android.com/training/basics/intents/result
我不知道你到底想怎么做,因为我对你的应用架构和需求了解不多。无论如何,我希望这些链接能给你带来你正在寻找的机会。
【讨论】:
我了解如何在活动之间传递数据,我主要关心的是如何获取所有这些过滤器,将它们组合成一个查询,然后根据用户选择将这些查询应用到 FirestoreRecyclerOptions 构建器。以及如何设计它,以便用户可以将一些过滤器留空并且查询仍然有效(例如:如果他选择燃料:柴油,座位:5 但在牵引力时他不想过滤(或将其保留为默认值,如牵引力) : all or something like that). 我说清楚了吗? 看这里:github.com/firebase/FirebaseUI-Android/blob/master/database/src/… 只需使用 updateOptions。我无法帮助您构建查询,因为您没有包含有关表格外观的任何信息。关键是要有一个distiory 或map以上是关于Android Firestore 过滤器回收视图的主要内容,如果未能解决你的问题,请参考以下文章
Recycler View Android中的Firestore数据[重复]
Firestore如何在回收站视图中从firestore检索数据
将我的应用程序发布到 google playstore 后,我的应用程序无法获取 firestore 数据以回收分页视图