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);
}
}