专题1234导航

诚心请教一个关于ListView加载Json解析的问题

来源:互联网
发表时间:2017/4/19 9:36:31
责任编辑:王亮
字体:

为了帮助网友解决“诚心请教一个关于ListView加载Json解析的问题”相关的问题,学网通过互联网对“诚心请教一个关于ListView加载Json解析的问题”相关的解决方案进行了整理,用户详细问题包括:我目前已经被这个问题卡了挺久的,所以在此请教。真心求助
我用的框架是okhttp。已经得到了打log解析了JSOn数据,但是就是无法将数据加载到LIstview上。
代码如下。


 private void init() {

        mList=new ArrayList<DomesdicInfo>();
        mAdapter=new CommonAdapter<DomesdicInfo>(getActivity(),mList,R.layout.new_list_item) {


            @Override
            protected void convert(ViewHolder helper, int position, DomesdicInfo item) {
                 helper.setText(R.id.tv_title,item.getSubject());
                helper.setText(R.id.tv_text_new,item.getAbs_briefing());
                helper.setText(R.id.tv_author_new,item.getAuthor());
                helper.setText(R.id.tv_click_new,item.getClick());

                helper.setImageByUrl(R.id.iv_thumb,item.getImageID());
            }


        };
        mLv.setAdapter(mAdapter);
 private void loadData() {
       new Thread(new Runnable() {
           @Override
           public void run() {
               OkhttpUtil.sendOKHttpRequest(url, new Callback() {
                   @Override
                   public void onFailure(Call call, IOException e) {

                   }
                   //回调方法
                   @Override
                   public void onResponse(Call call, Response response) throws IOException {
                       //获取数据
                       responseData=response.body().string();
                       //获取数据后进行解析
                       parseJSONWithJSONObject(responseData);
                       Log.d("DomesticFragment", "onResponse: "+responseData);

                   }


               });
           }
       }).start();



        DomesdicInfo info=new DomesdicInfo("11","22","33","44","","","","");
        mList.add(info);

    }
 private void parseJSONWithJSONObject(String responseData) {
        try {
            JSONArray jsonArray=new JSONArray(responseData);
            Log.d("jsonArray", jsonArray.toString());



            for (int i=0;i<jsonArray.length();i++){
                JSONObject jsonObject=jsonArray.getJSONObject(i);
                String subject=jsonObject.getString("subject");
                Log.d("subject",subject);
                String abs=jsonObject.getString("abstract");

                String author=jsonObject.getString("author");
                String keywords=jsonObject.getString("keywords");
                String thumb=jsonObject.getString("thumb");
                String click=jsonObject.getString("clicks");

                DomesdicInfo info=new DomesdicInfo(subject,"","","","","","",""
                );
                Log.d("Fragment",info.toString());
                mList.add(info);
            }

        } catch (JSONException e) {
            e.printStackTrace();
            Log.d("error","parseJSONWithJSONObject()有误");
        }

    }


,具体解决方案如下:

解决方案1:
补充 这是我的okhttp工具类,我的接口是https
[code=java
]public class OkhttpUtil {
    public static void sendOKHttpRequest(final String address, final Callback callback){

                OkHttpClient client=new OkHttpClient();

                Request request=new Request.Builder()
                        .url(address).build();
                Call call=client.newCall(request);
                    call.enqueue(callback);


    }



}[/code]

解决方案2:
debug一步步走

解决方案3:
我感觉你设置adapter位置有问题,你改在数据请求成功之后去setadapter试试,其实尽可能用gson

解决方案4:
OkhttpUtil.sendOKHttpRequest(url, new Callback() {
                   @Override
                   public void onFailure(Call call, IOException e) {
 
                   }
                   //回调方法
                   @Override
                   public void onResponse(Call call, Response response) throws IOException {
                       //获取数据
                       responseData=response.body().string();
                       //获取数据后进行解析
                       parseJSONWithJSONObject(responseData);
                       Log.d("DomesticFragment", "onResponse: "+responseData);
 
                   }
 
 
               });

在获取到数据且解析了,且把得到的数据加入到mList之后,需要调用mAdapter.notifyDataChaned()方法来刷新listview,才会显示出来接口请求返回的数据。

解决方案5:
我这里已经解决问题了,加载不了的原因是因为开了多线程,没有设置Handler而已

www.xue163.com true http://www.xue163.com/588880/39215/392156670.html report 11345 诚心请教一个关于ListView加载Json解析的问题:解决方案1:补充 这是我的okhttp工具类,我的接口是https[code=java]public class OkhttpUtil {    public static void sendOKHttpRequest(final String address, final Callback callback){   ...
相关信息
最近关注
首页推荐
热门图片
最新添加资讯
24小时热门资讯
精彩资讯
精彩推荐
热点推荐
真视界
精彩图片
社区精粹
关于本站 | 广告服务 | 手机版 | 商务合作 | 免责申明 | 招聘信息 | 联系我们
Copyright © 2004-2016 Xue163.com All Rights Reserved. 学网 版权所有
京ICP备10044368号-1 京公网安备11010802011102号