在 Android 中的选项卡片段中显示网络服务数据的最佳方式
Best way to display web service data in Tabs fragments in Android
我需要开发一个 Android 应用程序来实现以下屏幕:
登录Activity(这里点击登录按钮,需要调用一个网络服务,从服务器获取 3 种不同产品的大量数据列表,比如 A、B 和 C,可能在 3 个单独的 ArrayLists)
List Activity(这里我需要在 A、B 和 C 的 3 个不同选项卡中显示 ArrayLists 的数据)
详细信息Activity(在任何选项卡中单击任何特定列表项后A/B/C - 应显示该特定项目的详细信息)
实现第二点的最佳方法是什么?我们能否同时呈现所有选项卡数据 - 因为我不想在单击其他选项卡时启动新的 Web 请求。
你们能帮帮我吗
我的解决方案
1-Singleton 保留 1 个数据实例
2-单例服务存储数据
3-在 Fragments 的 onCreateView 中保留来自单例广告显示数据的数据
这是我针对你的第二点的解决方案
对于第 3 点,您可以在您的对象中实现可序列化,并通过 intent 从您的 listActivity 将其传递给您的 DetailActivity(在 listActivity 中,很容易按位置获取数组中的对象)
编辑
单例
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(context).setData(data); (或 getData ...)这使您可以在应用程序中拥有对象的单一状态。最好是在应用程序中初始化这个 Singleton class
public class MyApplication extends Application {
@Override
public void onCreate()
{
super.onCreate();
GlobalVarSingleton.getInstance(this);
}
}
所以在 Service 中你只需要调用 setData 并传递你刚得到的数据。 myObj 是一个示例,您必须在场外使用您的数据对象。
在使用 GlobalVarSingleton.getIstance(this.getActivity()).getData();
的 CreateView 中,您可以存储数据
为了序列化看一下吧Passing data through intent using Serializable
请注意,了解数据何时可用很重要,我认为您等待网络响应以加载新的 listActivity,对吗?
关于申请 CLASS http://developer.android.com/reference/android/app/Application.html
我需要开发一个 Android 应用程序来实现以下屏幕:
登录Activity(这里点击登录按钮,需要调用一个网络服务,从服务器获取 3 种不同产品的大量数据列表,比如 A、B 和 C,可能在 3 个单独的 ArrayLists)
List Activity(这里我需要在 A、B 和 C 的 3 个不同选项卡中显示 ArrayLists 的数据)
详细信息Activity(在任何选项卡中单击任何特定列表项后A/B/C - 应显示该特定项目的详细信息)
实现第二点的最佳方法是什么?我们能否同时呈现所有选项卡数据 - 因为我不想在单击其他选项卡时启动新的 Web 请求。
你们能帮帮我吗
我的解决方案
1-Singleton 保留 1 个数据实例 2-单例服务存储数据 3-在 Fragments 的 onCreateView 中保留来自单例广告显示数据的数据
这是我针对你的第二点的解决方案
对于第 3 点,您可以在您的对象中实现可序列化,并通过 intent 从您的 listActivity 将其传递给您的 DetailActivity(在 listActivity 中,很容易按位置获取数组中的对象)
编辑
单例
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(context).setData(data); (或 getData ...)这使您可以在应用程序中拥有对象的单一状态。最好是在应用程序中初始化这个 Singleton class
public class MyApplication extends Application {
@Override
public void onCreate()
{
super.onCreate();
GlobalVarSingleton.getInstance(this);
}
}
所以在 Service 中你只需要调用 setData 并传递你刚得到的数据。 myObj 是一个示例,您必须在场外使用您的数据对象。
在使用 GlobalVarSingleton.getIstance(this.getActivity()).getData();
的 CreateView 中,您可以存储数据
为了序列化看一下吧Passing data through intent using Serializable
请注意,了解数据何时可用很重要,我认为您等待网络响应以加载新的 listActivity,对吗?
关于申请 CLASS http://developer.android.com/reference/android/app/Application.html