RecyclerView+++OKhttrp

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值