MainActivity:
public class MainActivity extends AppCompatActivity { private RecyclerView recyleview; private LinearLayoutManager linearLayoutManager; private RequestQueue mQueue; private RecyAdapter recyAdapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mQueue = Volley.newRequestQueue(this); initView(); initData(); } private void initView() { recyleview = (RecyclerView) findViewById(R.id.recy); linearLayoutManager = new LinearLayoutManager(this); recyAdapter = new RecyAdapter(this); recyleview.setLayoutManager(linearLayoutManager); recyAdapter.setOnClick(new RecyAdapter.onClick() { @Override public void onCli(View v, int position) { Toast.makeText(MainActivity.this, "点击了" + position, Toast.LENGTH_LONG).show(); } }); } private void initData() { //get请求 StringRequest stringRequest = new StringRequest("http://news-at.zhihu.com/api/4/news/latest", new Response.Listener<String>() { @Override public void onResponse(String response) { Log.d("TAG", response); Gson gson = new Gson(); Bean bean = gson.fromJson(response, Bean.class); List<Bean.TopStoriesBean> top_stories = bean.top_stories; recyAdapter.setData(top_stories); recyleview.setAdapter(recyAdapter); } }, new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError error) { Log.e("TAG", error.getMessage(), error); } }); //post请求 // StringRequest stringRequest = new StringRequest(Request.Method.POST, "http://v.juhe.cn/toutiao/index?", // new Response.Listener<String>() { // @Override // public void onResponse(String response) { // Log.d("TAG", response); // } // }, new Response.ErrorListener() { // @Override // public void onErrorResponse(VolleyError error) { // // } // }) { // @Override // protected Map<String, String> getParams() throws AuthFailureError { // Map<String, String> map = new HashMap<String, String>(); // map.put("type", "top"); // map.put("key", "872f6732cffe29504400ef658ba219b4"); // return map; // } // }; mQueue.add(stringRequest); } }
RecyAdapter:
public class RecyAdapter extends RecyclerView.Adapter { private List<Bean.TopStoriesBean> list=new ArrayList<>(); private Context mcontext; public RecyAdapter(Context context){ this.mcontext=context; } public void setData(List<Bean.TopStoriesBean> data){ this.list=data; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(mcontext, R.layout.recy_item, null); MyHolderView myHolderView = new MyHolderView(view); return myHolderView; } @Override public void onBindViewHolder(RecyclerView.ViewHolder holder, final int position) { MyHolderView my= (MyHolderView) holder; RequestQueue queue= Volley.newRequestQueue(mcontext); ImageLoader imageLoader=new ImageLoader(queue,new BitmapCache()); ImageLoader.ImageListener listener = ImageLoader.getImageListener(my.textimage, R.mipmap.ic_launcher, R.mipmap.ic_launcher_round); imageLoader.get(list.get(position).image,listener); my.texttitle.setText(list.get(position).title); my.texttitle.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { monClick.onCli(v,position); } }); } @Override public int getItemCount() { return list.size(); } class MyHolderView extends RecyclerView.ViewHolder{ private final TextView texttitle; private final ImageView textimage; public MyHolderView(View itemView) { super(itemView); texttitle = (TextView) itemView.findViewById(R.id.texttitle); textimage = (ImageView) itemView.findViewById(R.id.textimage); } } public interface onClick{ void onCli(View v,int position); } private onClick monClick; public void setOnClick(onClick onClick){ this.monClick=onClick; } }
BitmapCache:
public class BitmapCache implements ImageLoader.ImageCache { private LruCache<String, Bitmap> mCache; public BitmapCache() { int maxSize = 10 * 1024 * 1024; mCache = new LruCache<String, Bitmap>(maxSize) { @Override protected int sizeOf(String key, Bitmap bitmap) { return bitmap.getRowBytes() * bitmap.getHeight(); } }; } @Override public Bitmap getBitmap(String url) { return mCache.get(url); } @Override public void putBitmap(String url, Bitmap bitmap) { mCache.put(url, bitmap); } }