我开发了一个"租车";android应用程序在android Studio(Java),我想给它添加一个新功能。我想添加到主页,其中所有可用的汽车都显示一个按钮,该按钮打开一个新的活动,用户可以通过多个标准过滤要显示给他的汽车(从recyclerview)。例如:他可以选择燃料类型,座位数量,牵引类型等。
我的问题是:我如何从FilterCars活动(用户过滤汽车)传递数据到HomeFragment(显示所有汽车的地方)?我需要一个自定义的RecyclerView构建器来处理复合查询吗?
编辑:假设我将过滤器从FilterCars.class传递到带有intent bundles的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();
}
}
请阅读:https://developer.android.com/guide/fragments/communicate它应该对你有帮助。
你也可以学习startActivityForResult()如果你真的想要过滤器作为一个活动。付款:https://developer.android.com/training/basics/intents/result
我不知道你到底想怎么做,因为我不太了解你的应用程序架构和需求。无论如何,我希望这些链接能给你机会,你正在寻找。