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); } } } //封装的Okhttp3Utilspublic 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); } }