Volley网络请求框架

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

}

猜你喜欢

转载自blog.csdn.net/yuejunfei/article/details/76571398