【问题标题】:How to parse JSON to viewpager如何将 JSON 解析为 viewpager
【发布时间】:2018-09-09 12:49:39
【问题描述】:

我是 android studio 的初学者。我已经从服务器解析了一些 JSON 数据。我想在 viewpager 中实现这些数据。我得到了一个示例 viewpager 代码。但是当我将这些 JSON 数据应用到列表时,它显示无法解析构造函数。我的 Viewpager 代码如下。 我的 JSON 获取代码

public class MainActivity extends AppCompatActivity {
// Constants
private static final String TAG = MainActivity.class.getSimpleName();

// UI Components
private VerticalViewPager mVvpMainPager;

// Other objects
private ViewPagerAdapter mPagerAdapter;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initView();
}

private void initView() {
    mVvpMainPager = findViewById(R.id.activity_main_vvp_main_pager);

    setupViewPager();
}

private void setupViewPager() {
    mPagerAdapter = new ViewPagerAdapter(getSupportFragmentManager());
    for (BeanNews news : generateSampleNewsData()) {
        mPagerAdapter.addFragment(PagerFragment.newInstance(news), "News " + news.getNewsId());
    }
    mVvpMainPager.setAdapter(mPagerAdapter);
    mVvpMainPager.setOffscreenPageLimit(generateSampleNewsData().size());
}

private ArrayList<BeanNews> generateSampleNewsData() {
    String url ="http://maranamassapp.cf/json_getdata.php";
    JsonObjectRequest request = new JsonObjectRequest(Request.Method.GET, url, null,
            new Response.Listener<JSONObject>() {
                @Override
                public void onResponse(JSONObject response) {
                    try {
                        JSONArray jsonArray = response.getJSONArray("server_response");
                        for(int i = 0; i < jsonArray.length(); i++){
                            JSONObject ser =jsonArray.getJSONObject(i);
                            String creatorname =  ser.getString("head");
                            String imageUrl = ser.getString("image");
                            String cat = ser.getString("content");
                            String postdate = ser.getString("weburl");
                            String dateall = ser.getString("date");
                            BeanNews news = new BeanNews(creatorname,imageUrl,cat,postdate,dateall);
                            ArrayList<BeanNews> newsList = new ArrayList<>();
                            newsList.add(news);

                        }

                    } catch (JSONException e) {
                        e.printStackTrace();
                    }
                }
            }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            error.printStackTrace();
        }
    });



    return newsList;
}

【问题讨论】:

  • 请发布您的 BeanNews 课程
  • 你好 Nasim 欢迎来到 Stack Overflow。 如何将这些 JSON 数据应用到 viewpager 是什么意思 你的意思是在 ViewPager 的Fragments 中显示数据吗?你也可以粘贴你的xml吗?不知道你现在想要实现什么。谢谢
  • @ʍѳђઽ૯ท 我已经编辑并更新了完整的代码。感谢您的回复。
  • @umang-burman 我已经添加了完整的代码。感谢您的回复
  • 检查this link 关于ViewPager。现在,您需要在ViewPager xml 布局文件中使用RecyclerViewListView 来显示数据。这就是为什么我说请粘贴您的 xml 代码。因此,您需要在 ViewPager 内添加 Fragment,在 Fragment 内添加 RecyclerView,然后显示数据或添加到 RecyclerView 适配器。检查文档或this

标签: android android-viewpager android-json


【解决方案1】:

检查this关于ViewPager

允许用户左右翻转的布局管理器 页的数据。你提供一个PagerAdapter 的实现给 生成视图显示的页面。

ViewPager 最常与Fragment结合使用, 提供和管理每个页面生命周期的便捷方式。

现在,您需要在 ViewPager xml 布局文件中使用 RecyclerViewListView 来显示数据。所以,你需要在ViewPager 中添加Fragment,一个RecyclerView || ListViewFragment 内,然后显示数据或添加到 RecyclerView 适配器。

实际上无法将项目列表(在您的情况下来自 json)传递给 ViewPager 以显示在 Android 的视图中。

【讨论】:

  • 我没有使用 recyclerview,因为我想为每个 viewpager 显示一个 JSON 对象。
  • 您实际上必须在ViewPager 中使用Fragment(s)。寻找它in here。然后,使用RecyclerViewListView 为每个Fragment 中的项目设置Adapter。检查链接以了解它是如何工作的。恐怕你认为ViewPager 的工作方式是不正确的。
  • 你能为我做一个赚钱的项目吗?
  • 不需要钱。我的上帝,请 :] 我会帮你的,没关系。试着加入这个对话:chat.stackoverflow.com/rooms/179702/conversation 或我个人资料中的电子邮件。我已将您添加为有权写入。希望你能成功。
猜你喜欢
  • 2017-09-08
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多