RecyclerView+++OKhttrp

来源:互联网 发布:淘宝宝贝收藏链接 编辑:程序博客网 时间:2024/06/15 09:27
public class Suosuo_Activity extends AppCompatActivity {    RecyclerView   rv;    Been been;    //总的网址    String str="http://120.27.23.105/product/getCatagory";    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        getSupportActionBar().hide();        setContentView(R.layout.activity_suosuo_);        //ImageLoader的初始化        ImageLoaderConfiguration config=ImageLoaderConfiguration.createDefault(this);        ImageLoader.getInstance().init(config);        DisplayImageOptions options=DisplayImageOptions.createSimple();        rv= (RecyclerView) findViewById(R.id.rv);        okUrl();        Rvinit();    }    //OKhttp的网络获取方法    private void okUrl() {        //调用Okhttp3Utils类里的方法        Okhttp3Utils.doGet(str, new Callback() {            @Override            public void onFailure(Call call, IOException e) {}            @Override            public void onResponse(Call call, Response response) throws IOException {                //Gson的实例化                Gson gson=new Gson();                //将获取到的数据定义为String类型                String www=response.body().string();                //gson解析赋值到been                been=gson.fromJson(www,Been.class);                //判断                if(response.isSuccessful())                {                    runOnUiThread(new Runnable() {                        @Override                        public void run() {                            //实例化RecyclerView适配器                            Myadapter   adapter=new Myadapter();                            //rv添加适配器                            rv.setAdapter(adapter);                            //刷新适配器                            adapter.notifyDataSetChanged();                        }                    });                }            }        });    }    //Rvde 操作方法    private void Rvinit() {       // LinearLayoutManager manager=new LinearLayoutManager(this);        GridLayoutManager manager=new GridLayoutManager(this,2);        rv.setLayoutManager(manager);        rv.addItemDecoration(new DividerItemDecoration(this,DividerItemDecoration.VERTICAL));    }    //Rv的适配器    class Myadapter extends RecyclerView.Adapter<Myadapter.MyViewHolder>{        @Override        public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {            View  view=View.inflate(Suosuo_Activity.this,R.layout.rv_item,null);            MyViewHolder  holder=new MyViewHolder(view);            return holder;        }        @Override        public void onBindViewHolder(MyViewHolder holder, int position) {            //item的属性赋值            holder.text.setText(been.getData().get(position).getName());            ImageLoader.getInstance().displayImage(been.getData().get(position).getIcon(),holder.img);            holder.itemView.setTag(position);        }        @Override        public int getItemCount() {            return been==null ? 0 : been.getData().size();        }        //自定义MyViewHolder        class MyViewHolder extends RecyclerView.ViewHolder{            TextView   text;            ImageView  img;            public MyViewHolder(View itemView) {                super(itemView);                text=itemView.findViewById(R.id.name);                img=itemView.findViewById(R.id.img);            }        }    }//封装的Okhttp3Utils
public class Okhttp3Utils {    private static OkHttpClient okHttpClient = null;    public Okhttp3Utils() {    }    private static OkHttpClient getOkHttpClient() {        synchronized (Okhttp3Utils.class) {            if (okHttpClient == null) {                okHttpClient = new OkHttpClient();            }        }        return okHttpClient;    }    //上传文件    public static void loadFile(String url, File file, String fileName){        OkHttpClient okHttpClient = getOkHttpClient();        //设置文件类型        RequestBody requestBody = RequestBody.create(MediaType.parse("application/octet-stream"),file);        //设置请求体        RequestBody body = new MultipartBody.Builder()                .setType(MultipartBody.FORM)                .addFormDataPart("image",fileName,requestBody)                .build();        //请求方式        Request request = new Request.Builder().url(url).post(body).build();        okHttpClient.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {            }            @Override            public void onResponse(Call call, Response response) throws IOException {                Log.i("成功","成功");            }        });    }    /**     * 1.接口地址     * 2.接口回调     */    public static void doGet(String url, Callback callback){        OkHttpClient okHttpClient = getOkHttpClient();        Request request = new Request.Builder().url(url).build();        okHttpClient.newCall(request).enqueue(callback);    }    /**     * 1.地址     * 2.接口回调     * 3.请求体     */    public static void doPost(String url, Map<String,String> map, Callback callback){        OkHttpClient okHttpClient = getOkHttpClient();        FormBody.Builder builder = new FormBody.Builder();        //遍历map集合   设置请求体        for (String mapKey : map.keySet()){            builder.add(mapKey,map.get(mapKey));        }        //设置请求方式        Request request = new Request.Builder().url(url).post(builder.build()).build();        //执行请求方式    接口回调        okHttpClient.newCall(request).enqueue(callback);    }    /**     *1.下载地址     */    public static void doDown(String url,Callback callback){        OkHttpClient okHttpClient = getOkHttpClient();        Request build = new Request.Builder().url(url).build();        okHttpClient.newCall(build).enqueue(callback);    }}

原创粉丝点击