要导入RecyclerView的依赖
还要导入OkHttp Okio 两个架包
切记要在清单文件里写上网络权限
<uses-permission android:name="android.permission.INTERNET"/>
MainActivity
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.DividerItemDecoration;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import com.example.okhttp.Bean.Max;
import com.example.okhttp.Utils.OkHttp3Utils;
import com.google.gson.Gson;
import com.nostra13.universalimageloader.core.DisplayImageOptions;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import java.io.IOException;
import okhttp3.Call;
import okhttp3.Callback;
import okhttp3.Response;
/**
* OkHttp 请求网络数据
* RecyclerView 多条目加载
* RecyclerView 添加分割线
*/
public class MainActivity extends AppCompatActivity {
//定义一个网址,接口
String str = "http://m.yunifang.com/yunifang/mobile/category/list?random=96333&encode=bf3386e14fe5bb0bcef234baebca2414";
RecyclerView rv;
Max max;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//找控件
rv = (RecyclerView) findViewById(R.id.rv);
//初始化ImageLoader
ImageLoaderConfiguration cofn = ImageLoaderConfiguration.createDefault(this);
ImageLoader.getInstance().init(cofn);
DisplayImageOptions simple = DisplayImageOptions.createSimple();
okURL();
init();
}
// 样式
private void init() {
//LinearLayoutManager布局样式
// LinearLayoutManager manager=new LinearLayoutManager(this);
// GridLayoutManager布局样式
GridLayoutManager manager = new GridLayoutManager(this, 2);
//设置样式
rv.setLayoutManager(manager);
//设置方向 VERTICAL垂直方向
//想要添加分割线,必须要写上这行代码
rv.addItemDecoration(new DividerItemDecoration(this, DividerItemDecoration.VERTICAL));
}
//okhttp的网络请求
private void okURL() {
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 strs = response.body().string();
max = gson.fromJson(strs, Max.class);
//判断call,如果返回ture就继续执行,否则就不行
if (response.isSuccessful()) {
runOnUiThread(new Runnable() {
@Override
public void run() {
//创建适配器
Myadapter adapter = new Myadapter();
//设置适配器
rv.setAdapter(adapter);
//刷新适配器
adapter.notifyDataSetChanged();
}
});
}
}
});
}
//创建适配器
class Myadapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
public static final int TYPE_ONE=0;
public static final int TYPE_TWO=1;
private MyViewHolder holder1;
private MyViewHolder1 holder2;
@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//把两个item布局加载进来
if (viewType==TYPE_ONE){
//item1布局
View view1=View.inflate(MainActivity.this,R.layout.item2,null);
//实例化Holder1
holder1 = new MyViewHolder(view1);
return holder1;
}else {
//item1布局
View view2=View.inflate(MainActivity.this,R.layout.item1,null);
//实例化Holder2
holder2 = new MyViewHolder1(view2);
return holder2;
}
}
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
if(holder1 instanceof MyViewHolder){
holder1.tv.setText(max.getData().getGoodsBrief().get(position).getGoods_name());
ImageLoader.getInstance().displayImage(max.getData().getGoodsBrief().get(position).getGoods_img(),holder1.iv);
}
if(holder2 instanceof MyViewHolder1){
holder2.tv.setText(max.getData().getGoodsBrief().get(position).getGoods_name());
ImageLoader.getInstance().displayImage(max.getData().getGoodsBrief().get(position).getGoods_img(),holder2.iv);
}
}
//想要实现多条目必须重写此方