【问题标题】:pass json array as bundle to fragment using android volley使用android volley将json数组作为bundle传递给片段
【发布时间】:2016-02-23 07:05:28
【问题描述】:

我想制作一个从 android volley 获取数据的 viewpager。我已经解析了如下所示的json。

    HashMap<String, String> event = new HashMap<String, String>();

        JSONArray timings = object1.getJSONArray("periods");


        for (int t=0; t<timings.length(); t++){
            JSONObject timeObject = timings.getJSONObject(t);

            String period = timeObject.getString("periodName");
            periodList.put("",period);

            System.out.println(period);

            event.put(TAG_PERIOD,period);

        }

现在我想发送特定日期(周一、周二等)的课堂时间,如下所示:

resulting image

我想将解析后的数组发送到片段。 以下是pageradapter和fragment类的代码。

页面适配器:

    public class PagerAdapter extends FragmentPagerAdapter {
int mNumOfTabs;
TabFragment1 fragA, fragB,fragC,fragD,fragE,fragF;


public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}

public void setFragments(Context c){

    // Set up the simple base fragments
    fragA = new TabFragment1();
    fragB = new TabFragment1();
    fragC = new TabFragment1();
    fragD = new TabFragment1();
    fragE = new TabFragment1();
    fragF = new TabFragment1();

}

@Override
public Fragment getItem(int position) {

    Fragment fragment;

    switch (position) {
        case 0:
            fragment = fragA;
            return fragment;

        case 1:
            fragment = fragB;
            return fragment;

        case 2:
            fragment = fragC;
            return fragment;

        case 3:
            fragment = fragD;
            return fragment;

        case 4:
            fragment = fragE;
            return fragment;

        case 5:
            fragment = fragF;
            return fragment;

        default:
            return null;
    }


}

@Override
public int getCount() {
    return mNumOfTabs;
}

}

片段:

    public class TabFragment1 extends android.support.v4.app.Fragment {


@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {

 return inflater.inflate(R.layout.tab_fragment_1, container, false);


}



}

我是 android 新手,想知道如何将解析后的数据传递给片段。

【问题讨论】:

  • 您是在哪个班级接收来自 volley 的数据?
  • 主类接收数据

标签: android json android-fragments fragmentpageradapter


【解决方案1】:
Bundle args = new Bundle();
args.putString("response",jsonarray.toString());    
ListFrag newFragment = new ListFrag ();
newFragment.setArguments(args);

并在 Fragment 中获取捆绑包的值,

Bundle b = getArguments();
String s = b.getString("response");
JSONArray array=new JSONArray(s);

【讨论】:

    【解决方案2】:

    使用此方法进行 JSON 解析:

    public static <T> T JsonParse(T t, String response)
                throws JsonSyntaxException, IOException, XmlPullParserException {
            InputStream in = new ByteArrayInputStream(response.getBytes());
            JsonReader reader;
            reader = new JsonReader(new InputStreamReader(in, "UTF-8"));
            Gson gson = new Gson();
            t = (T) gson.fromJson(reader, t.getClass());
            reader.close();
            return t;
        }
    

    创建两个模型类:

    1.public class Model_main{
      public Arraylist<Model_period> mPeriodList=new ArrayList<Model_period>();
    
    }
    
    2.public class Model_period{
       @SerializedName("periodName")
       public String periodName;
    }
    

    您可以直接在 budle 中传递 jsonresponse 字符串。然后在特定的 viewpager 中解析该响应。

    使用上述方法和上述模型类解析Json

    响应来自 volly。

    Model_Main model_main = JsonParse(new Model_Main(), response);
    
    
    Arraylist<Model_period>  mList = model_main.mPeriodList;
    

    它非常简单且有用。

    请在android studio项目的依赖中添加gson库或在eclipse的Lib文件夹中添加Gson.rar。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-02-11
      • 1970-01-01
      • 2012-06-10
      • 1970-01-01
      • 2018-01-29
      • 2013-03-01
      • 1970-01-01
      相关资源
      最近更新 更多