我需要开发一个Android应用程序,其中包含以下屏幕:
登录活动(此处点击登录按钮,需要调用一个Web服务,从服务器获取3个不同产品的大量数据列表,例如A,B和C,可能在3个独立的ArrayLists中)
列出活动(这里我需要在A,B和C的3个不同标签中显示ArrayLists的数据)
详细信息活动(点击任何标签A / B / C中的任何特定列表项后 - 应显示该特定项目的详细信息)
获得第二点的最佳方法是什么?我们可以同时渲染所有选项卡数据 - 因为我不希望在单击其他选项卡时启动新的Web请求。
你们能帮助我吗?
答案 0 :(得分:0)
我的解决方案
1-Singleton可保持数据的1个等级 单一服务存储数据 3-on onCreateView of Fragments保存来自单件广告显示数据的数据
这是我的第二点解决方案
对于第3点,您可以在对象中实现serializable,并将listActivity中的intent传递给DetailActivity(在listActivity中,它可以轻松地按位置获取Array中的对象)
修改
SINGLETON
public class GlobalVarSingleton {
private static final String TAG = "GlobalVarSingleton";
private static GlobalVarSingleton mInstance = null;
private static myObj token;
private GlobalVarSingleton(){
}
public static GlobalVarSingleton getInstance(Context ctx){
if(mInstance == null)
{
Log.d(TAG, "init Global Singleton");
mInstance = new GlobalVarSingleton();
}
return mInstance;
}
public void setData(myObj data){
this.token = data;
}
public myObj getData(){
return token;
}
}
访问 - > GlobalVarSingleton.getIstance(上下文).setData(数据); (或getData ...)这允许您在应用程序中拥有对象的单一权利。最好的是在Application类中启动这个Singleton
public class MyApplication extends Application {
@Override
public void onCreate()
{
super.onCreate();
GlobalVarSingleton.getInstance(this);
}
}
所以在服务中你只需要将setData调用为up并传递刚刚获取的数据。 myObj是一个示例,您必须使用您的数据对象。
在带有GlobalVarSingleton.getIstance(this.getActivity()).getData();
的CreateView中,您可以获得数据存储
对于可序列化,请查看Passing data through intent using Serializable
请注意,了解数据何时可用时,我认为您等待网络响应加载新的listActivity是不是很重要,是不是?
关于申请类http://developer.android.com/reference/android/app/Application.html