如何发送对象/状态到整个应用程序/所有片段?



我正在制作一个应用程序,在主活动和底部导航中有一个搜索框。在搜索框中,用户选择位置,然后将查询发送到天气API。我想传递对象,也就是API的响应,给我app中的所有片段,最简单的方法是什么?

  1. 您可以使用ViewModel来存储数据。此外,使用MutableLiveData,您可以根据模型的变化动态更新UI。
  2. 使用RxJava创建一个EventBus对象,它可以容纳一个BehaviorSubject与最新发布的数据。同样,您可以订阅这些数据并自动更新您的UI。
  3. 如果你需要多个应用会话之间的位置,可以使用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现在使用它作为你喜欢的

实际上,您有几个选择:

  1. 将接收到的数据保存到本地数据库中(您可以使用Jetpack中的Room)。然后将数据从数据库加载到您需要的屏幕。
  2. 或者你可以将数据保存到内存中:它可以像DI容器一样。
  3. 也可以使用RxJava缓存或Retrofit缓存。

第二种方法对你来说是最简单的。

最新更新