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

来源:互联网 发布:软件开放平台 编辑:程序博客网 时间:2024/06/07 02:30
//首先加依赖
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);        }    }}

 

阅读全文
0 0
原创粉丝点击