RecyclerView基本使用中的JsonUtil报错
在2-1RecyclerView的基本使用一节中,我按照视频和下载到的源码参考,最后运行发现JsonUtil的代码报错。
JsonUtil代码:
package com.demo.recyclerviewdemo.utils; import com.google.gson.Gson; import com.google.gson.JsonNull; import java.lang.reflect.Type; import static android.icu.lang.UCharacter.GraphemeClusterBreak.T; public class JsonUtil { private static Gson gson=new Gson(); private JsonUtil(){} public static String toJson(Object src){ if(src==null){ return gson.toJson(JsonNull.INSTANCE); } return gson.toJson(src); } public static <T>Object fromJson(String json, Class<T>classOfT){ return gson.fromJson(json,(Type)classOfT); } }
BaseRecyclerViewActivity代码:
package com.demo.recyclerviewdemo; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.RecyclerView; import com.demo.recyclerviewdemo.adapter.MyAdapter; import com.demo.recyclerviewdemo.model.ImageData; import com.demo.recyclerviewdemo.utils.JsonUtil; import java.io.IOException; import java.util.ArrayList; import java.util.List; import okhttp3.Call; import okhttp3.Callback; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; public class BaseRecyclerViewActivity extends AppCompatActivity { private List<String> resList = new ArrayList<>(); private MyAdapter mAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_base_recycler_view); RecyclerView mRecyclerView = findViewById(R.id.recyclerView); //设置布局管理器 GridLayoutManager mGridLayoutManager = new GridLayoutManager(this, 3); mRecyclerView.setLayoutManager(mGridLayoutManager); //请求数据源 requestData(); //设置适配器 mAdapter = new MyAdapter(this, resList); } private void requestData() { OkHttpClient mOkHttpClient = new OkHttpClient(); Request.Builder requestBuilder = new Request.Builder().url("http://www.imooc.com/api/teacher?type=2&page=1"); final Request request = requestBuilder.build(); Call mCall = mOkHttpClient.newCall(request); mCall.enqueue(new Callback() { @Override public void onFailure(@NonNull Call call, @NonNull IOException e) { //ignore } @Override public void onResponse(@NonNull Call call, @NonNull Response response) throws IOException { String res = response.body().toString(); ImageData imageData = (ImageData) JsonUtil.fromJson(res, ImageData.class); List<ImageData.DataBean> data = imageData.getData(); for (int i = 0; i < data.size(); i++) { ImageData.DataBean dataBean = data.get(i); String picBig = dataBean.getPicSmall(); resList.add(picBig); } mAdapter.notifyDataSetChanged(); } }); } }
所报错误:
0
收起
正在回答
1回答
可能存在以下问题:1)ImageData 类的属性名是否与请求回来的json字符串“key”一致。2)你先输出一下res是什么。与ImageData 做一下对比。另:mRecyclerView没有设置adapter。
Android数据通信开发与应用2018版
- 参与学习 人
- 提交作业 147 份
- 解答问题 687 个
本专题介绍了Android开发核心组件:广播、服务及全局应用。教会你如何使用AIDL、Thread、Socket、蓝牙解决进程线程间通信问题。利用Glide等实现异步加载及NDK原生代码开发。
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星