在Android中的Tabs片段中显示Web服务数据的最佳方式

时间:2015-01-10 19:51:51

标签: android web-services android-fragments android-tabs

我需要开发一个Android应用程序,其中包含以下屏幕:

  1. 登录活动(此处点击登录按钮,需要调用一个Web服务,从服务器获取3个不同产品的大量数据列表,例如A,B和C,可能在3个独立的ArrayLists中)

  2. 列出活动(这里我需要在A,B和C的3个不同标签中显示ArrayLists的数据)

  3. 详细信息活动(点击任何标签A / B / C中的任何特定列表项后 - 应显示该特定项目的详细信息)

  4. 获得第二点的最佳方法是什么?我们可以同时渲染所有选项卡数据 - 因为我不希望在单击其他选项卡时启动新的Web请求。

    你们能帮助我吗?

1 个答案:

答案 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