我正在制作一个应用程序,在主活动和底部导航中有一个搜索框。在搜索框中,用户选择位置,然后将查询发送到天气API。我想传递对象,也就是API的响应,给我app中的所有片段,最简单的方法是什么?
- 您可以使用
ViewModel
来存储数据。此外,使用MutableLiveData
,您可以根据模型的变化动态更新UI。 - 使用RxJava创建一个
EventBus
对象,它可以容纳一个BehaviorSubject
与最新发布的数据。同样,您可以订阅这些数据并自动更新您的UI。 - 如果你需要多个应用会话之间的位置,可以使用Room或Realm来存储数据。
你需要在你的应用程序中通过this发送整个对象并在你想要的任何地方访问它
-
步骤1:将您的数据存储在您想要的列表中:
ArrayList<FeaturedProductDataModel> featuredProductsDataModelArrayList; ///////////get data and store in ArrayList/////////////////// featuredProductsDataModelArrayList = new ArrayList<(listofhome.getFeaturedProducts());
-
步骤2:声明共享首选项,并将数据放入其中,以便在所有应用程序中进一步使用
featuretopprefernce = getActivity().getSharedPreferences("homelist", Context.MODE_PRIVATE);
SharedPreferences。编辑器preseditor = featuretoppreference .edit();
//设置
Gson = new Gson();
String listofbusiness = gson.toJson(featuredProductsDataModelArrayList);prefsEditor.putString("featuredProductsDataModelArrayList"listofbusiness);
prefsEditor.apply ();
- 步骤3:
在接收活动或片段时创建一个列表并将数据放入其中
ArrayList<FeaturedProductDataModel> dataModelArrayList;
SharedPreferences featuredprefernce;
featuredprefernce = getActivity().getSharedPreferences("homelist", Context.MODE_PRIVATE);
featuredlist = featuredprefernce.getString("featuredProductsDataModelArrayList",null);
Gson gson = new Gson();
Type type = new TypeToken<List<FeaturedProductDataModel>>(){}.getType();
dataModelArrayList = gson.fromJson(featuredlist, type);
你将得到你的数据在dataModelArrayList现在使用它作为你喜欢的
实际上,您有几个选择:
- 将接收到的数据保存到本地数据库中(您可以使用Jetpack中的Room)。然后将数据从数据库加载到您需要的屏幕。
- 或者你可以将数据保存到内存中:它可以像DI容器一样。 也可以使用RxJava缓存或Retrofit缓存。
第二种方法对你来说是最简单的。