OkHttp解析数据,RecyclerView和Glide的加载图片

//首先加依赖
compile 'com.android.support:appcompat-v7:26.0.0-alpha1'(与recyclerview的后面要一致)
//recyclerview的依赖
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
//glide的依赖
compile 'com.github.bumptech.glide:glide:4.0.0'
//okhttp的依赖
compile 'com.squareup.okhttp3:okhttp:3.9.0'
//加权限

<uses-permission android:name="android.permission.INTERNET"></uses-permission>

//主页面
public class MainActivity extends AppCompatActivity {
    //全局变量
    private RecyclerView recycler;

    private Handler handler=new Handler();
    private String url="http://bz.budejie.com/?typeid=2&ver=3.4.3&no_cry=1&client=android&c=wallPaper&a=random&bigid=0";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        initData();

    }

    private void initData() {
        OkHttpClient client = new OkHttpClient();
        Request request = new Request.Builder().url(url).build();
        Call call = client.newCall(request);
        call.enqueue(new Callback() {
            @Override
            public void onFailure(Call call, IOException e) {
                Log.d("onFailure", "请求失败");
            }

            @Override
            public void onResponse(Call call, Response response) throws IOException {

                if (response.body() != null && response.isSuccessful()) {
                    String result = response.body().string();
                    Bean bean = Bean.objectFromData(result);
                    Bean.DataBean data = bean.data;
                    final List<Bean.DataBean.WallpaperListInfoBean> wallpaperListInfo = data.WallpaperListInfo;
                    handler.post(new Runnable() {
                        @Override
                        public void run() {

                            recycler.setAdapter(new MyAdapter(MainActivity.this, wallpaperListInfo));
                        }
                    });
                } else {

                    Log.d("onFailure", "请求失败");
                }
            }
        });
    }
    //初始化
    private void initView() {
        //找到控件
        recycler = (RecyclerView) findViewById(R.id.recycler);
//默认的
 //        LinearLayoutManager manager = new LinearLayoutManager(this);
        GridLayoutManager glide = new GridLayoutManager(this, 3);
//瀑布流
 //        StaggeredGridLayoutManager stage = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
        recycler.setLayoutManager(glide);
    }
}


//MyAdapter类
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> {
    //声明变量
    private Context context;
    private List<Bean.DataBean.WallpaperListInfoBean> list = new ArrayList<>();

    //构造方法
    public MyAdapter(Context context, List<Bean.DataBean.WallpaperListInfoBean> list) {
        this.context = context;
        this.list = list;
    }

    @Override
    public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        //加载布局
        View view = LayoutInflater.from(context).inflate(R.layout.item, parent, false);
        ViewHolder holder = new ViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(MyAdapter.ViewHolder holder, int position) {
        Bean.DataBean.WallpaperListInfoBean dataBean = list.get(position);

        Glide.with(context).load(dataBean.WallPaperMiddle).into(holder.imageView);

    }

    @Override
    public int getItemCount() {
        return list == null ? 0 : list.size();//返回条目数
    }

    public class ViewHolder extends RecyclerView.ViewHolder {
        //布局中的控件
        public ImageView imageView;

        public ViewHolder(View itemView) {
            super(itemView);
            //初始化控件控件
            imageView = (ImageView) itemView.findViewById(R.id.img);
        }
    }

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值