先上效果图:
接口地址:http://365jia.cn/news/api3/365jia/news/headline?page=2
1、MainActivity代码
public class MainActivity extends AppCompatActivity { private static final int SUCCESS = 1; private static final int FALL = 2; private String path = "http://365jia.cn/news/api3/365jia/news/headline?page=2"; private RecyclerView recyclerView; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); //判断如果成功就进行解析并展示数据 if(msg.what==SUCCESS){ String s = (String) msg.obj; Gson gson = new Gson(); List<UserBean.DataBeanX.DataBean> list = gson.fromJson(s, UserBean.class).getData().getData(); recyclerView.setAdapter(new MyBase(MainActivity.this,list)); } else if(msg.what == FALL){ Toast.makeText(MainActivity.this, "获取网络失败", Toast.LENGTH_SHORT).show(); } else{} } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView = (RecyclerView) findViewById(R.id.recy); //一定得设置布局管理器 recyclerView.setLayoutManager(new LinearLayoutManager(MainActivity.this,LinearLayoutManager.VERTICAL,false)); getdata(); } //获取数据 private void getdata() { OkHttpClient client = new OkHttpClient.Builder().build(); Request request = new Request.Builder().url(path).build(); client.newCall(request).enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { handler.sendEmptyMessage(FALL); } @Override public void onResponse(Call call, Response response) throws IOException { String s = response.body().string(); Message msg = Message.obtain(); msg.obj = s; msg.what = SUCCESS; handler.sendMessage(msg); } }); } }
2、ImageLoader
3、RecyclerView适配器
//多条目时此处不用类名调用ViewHodler public class MyBase extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private static final int FLAG = 0; private static final int FLOW = 1; private Context context; private List<UserBean.DataBeanX.DataBean> list; public MyBase(Context context, List<UserBean.DataBeanX.DataBean> list) { this.context = context; this.list = list; } DisplayImageOptions options = new DisplayImageOptions.Builder() .cacheInMemory(true)//使用内存缓存 .cacheOnDisk(true)//使用磁盘缓存 .showImageOnFail(R.mipmap.ic_launcher)