在 Android 中的选项卡片段中显示网络服务数据的最佳方式

Best way to display web service data in Tabs fragments in Android

我需要开发一个 Android 应用程序来实现以下屏幕:

  1. 登录Activity(这里点击登录按钮,需要调用一个网络服务,从服务器获取 3 种不同产品的大量数据列表,比如 A、B 和 C,可能在 3 个单独的 ArrayLists)

  2. List Activity(这里我需要在 A、B 和 C 的 3 个不同选项卡中显示 ArrayLists 的数据)

  3. 详细信息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