我正在开发一个基于列表和地图的Android应用程序。
当加载列表时,我从网络服务获取数据,它与我将用于在地图中添加标记的数据相同。
如何避免再次加载数据?
感谢。
编辑:我忘了说我正在使用带有两个片段的ABS选项卡控件,一个用于列表,另一个用于地图。我想将数据保存在选项卡控件活动中并与片段共享。
有没有办法从片段中的父活动中获取数据? 而对于大量数据,最好将内容写入sql?
答案 0 :(得分:1)
您可以将数据作为Intent extra传递,并在另一个Activity中检索它:
Bundle extras = getIntent().getExtras();
String data;
if (extras != null) {
data = extras.getString("key");
//use your data
}
如果您的数据是某种无法通过Intent extras传递的对象,您可以创建一个扩展Application类的Singleton。
答案 1 :(得分:0)
首先,你的所有模型类应该是实现Serializable,所以你可以将整个模型发送到另一个带有商店数据的活动。
然后在第一次活动
之后intent.putExtra(“model”,commanModelList);
然后在第二个活动中获得此意图
commanModelList = (ArrayList<CommanModel>) getIntent().getSerializableExtra("model");
将ur commanModelList与商店数据一起使用。
答案 2 :(得分:0)
您可以添加某些类型的ArrayLists(Integer,String ...)作为intent extra(例如Intent类的public Intent putIntegerArrayListExtra (String name, ArrayList<Integer> value)
)。
如果这些不合适,您可以使用getter / setter对Application类进行子类化并将List存储在其中。您的应用程序对象可以使用getApplication()
从所有活动中获取(您可以将其转换为您自己的应用程序子类型)。