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 星