【问题标题】:How to show JSON data in fragments?如何在片段中显示 JSON 数据?
【发布时间】:2016-04-05 04:30:27
【问题描述】:

我在选项卡视图模式下的活动上有四个可滑动片段。每个片段都应显示来自 API 的 JSON 数据。 有两个问题 第一个问题是只有在第一个片段中我才能获取数据。 第二个问题是,当刷到下一个片段时,我丢失了第一个片段中收到的数据。 每个片段都有四种布局。 我正在使用自定义列表视图来显示数据。

*在创建片段并获取 JSON 数据后,我使用自定义列表视图在第一个片段中使用 aeroFirst 方法显示它,如下所示,但我无法在另一个片段中执行相同操作。创建片段、JSON解析和aeroFirst方法都在MainActivityclass *

代码片段

                private void aeroFirst(List<Details> mList) {
    //   layout = (LinearLayout) findViewById(R.id.linear);


    for (Details bean : details) {
        final String urlChar = bean.getUrl();

        if (bean.getResType().equals("Videos"))

        {
            ListView listView = (ListView) findViewById(R.id.list);
            CustomListViewAdapter adapter = new CustomListViewAdapter(this,
                    R.layout.list_item, mList);
            listView.setAdapter(adapter);


            listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view,
                                        int position, long id) {
                    Toast.makeText(getApplicationContext(),
                            "Click ListItem Number " + urlChar, Toast.LENGTH_SHORT)
                            .show();

【问题讨论】:

  • 创建一个管理器类作为单例,将 API 响应存储在管理器中并从您的片段访问响应。

标签: android json listview fragment


【解决方案1】:

所有四个片段背后一定有一个活动,对吧?将值存储在该活动中,以便所有四个片段都可以访问 JSON。这可能不是最好的风格,但另一种解决方案是将其保存到 shared preference 或类似方法中。

另一种方法是加载活动中的所有内容,然后将每个片段的 JSON 放入 arguments as bundles

【讨论】:

  • 在共享首选项中存储列表项是一个非常糟糕的主意。
  • 我使用单个 API 来获取数据,在获取之前我使用 if 语句来区分 API 中不同类型的数据。
  • @ReazMurshed 在共享首选项中存储列表项是一个非常糟糕的主意,所以我不推荐它。我认为最好的方法是将它作为静态字段存储在托管所有四个片段的活动中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-02-22
相关资源
最近更新 更多