V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
houskii
V2EX  ›  问与答

新人想写一个 v2 的 android 客户端, json 解析遇到了点问题

  •  2
     
  •   houskii · 2015-10-08 18:15:05 +08:00 · 1703 次点击
    这是一个创建于 3130 天前的主题,其中的信息可能已经有所发展或是发生改变。
    public void internetRequest(){
              JsonArray jsonArray = new JsonArray();
              RequestQueue mQueue = Volley.newRequestQueue(this);
              JsonArrayRequest jsonArrayRequest = new JsonArrayRequest("https://www.v2ex.com",
                      new Response.Listener<JSONArray>() {
                          @Override
                          public void onResponse(JSONArray response) {
                              try{
                                  Log.e("json"," response "+response.length());
                                  int i = myAdapter.getItemCount();
                                  int j = myAdapter.getItemCount();
                                  for(;i<j+12;i++){
                                      hotPost = gson.fromJson(response.getJSONObject(i).toString(), HotPost.class);
                                      arrayList.add(i,hotPost.getTitle());
    
                                  }
                              }catch (JSONException e){
                                  Log.e("json","error");
                              }
    
                          }
                      },
                      new Response.ErrorListener() {
                          @Override
                          public void onErrorResponse(VolleyError error) {
    
                          }
                      });
              mQueue.add(jsonArrayRequest);
          }
    

    我用的 RecyclyList ,写了一个 Srcoll 的监听,当滑到底部时距离 4 个 item 时加载接下来的数据

    mRecyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() {
                  @Override
                  public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
                      super.onScrolled(recyclerView, dx, dy);
                      int lastVisbleItem = layoutManager.findLastVisibleItemPosition();
                      int totalItemCount = myAdapter.getItemCount();
                      if (lastVisbleItem >= totalItemCount - 4 && dy > 0) {
                          changeData();
                      }
                    ......
    

    听学长说一般客户端的滑动到底部加载似乎数据都是分页读取,但是 V2 的 json 数据并没有看到
    页码啊……难道每次读取都要全部加载么……

    而且好像每次也只能读取最新的 14 条数据……
    怎样读取完整的……
    www.v2ex.com

    orz 求一下正确的解决方式

    5 条回复    2015-10-08 19:28:23 +08:00
    kslr
        1
    kslr  
       2015-10-08 18:26:17 +08:00
    API 看起来只是提供了每天 /最新的数据
    WildCat
        2
    WildCat  
       2015-10-08 18:29:41 +08:00 via iPhone   ❤️ 1
    You need jsoup
    houskii
        3
    houskii  
    OP
       2015-10-08 18:30:00 +08:00
    @kslr 所以想做客户端还是只能自己写爬虫么
    houskii
        4
    houskii  
    OP
       2015-10-08 18:30:34 +08:00
    @WildCat OK ,回头看看
    Ouyangan
        5
    Ouyangan  
       2015-10-08 19:28:23 +08:00
    @houskii java 后端 , 下班自学安卓也是准备写个 V2 的 Android 客户端 , 不过只是负责显示 , 数据解析这些后端提供 .
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   1043 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 18:10 · PVG 02:10 · LAX 11:10 · JFK 14:10
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.