//首先加依赖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); } } }
OkHttp解析数据,RecyclerView和Glide的加载图片
最新推荐文章于 2020-08-14 17:24:27 发布