**
MainActivity
**
public class MainActivity extends AppCompatActivity {
Context context;
@BindView(R.id.rv_container)
RecyclerView rvContainer;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ButterKnife.bind(this);
//上下文
context = MainActivity.this;
//网络请求
OkGo.<String>get(Constant.BEAUTY_URL).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
String responseData = response.body().toString();
//Toast.makeText(context, responseData, Toast.LENGTH_SHORT).show();
//Log.d("MainActivity", responseData);
//数据解析
Gson gson = new Gson();
BeautyBean beautyBean = gson.fromJson(responseData,BeautyBean.class);
//1.数据源
ArrayList<BeautyBean.ResultsBean> beanList = (ArrayList<BeautyBean.ResultsBean>) beautyBean.getResults();
//2.布局管理器
//①线性 LinearLayoutManager
//②网格 GridLayoutManager
//③瀑布流 StaggeredGridLayoutManager
//LinearLayoutManager manager = new LinearLayoutManager(context, LinearLayoutManager.VERTICAL, false);
//GridLayoutManager manager = new GridLayoutManager(context, 2,GridLayoutManager.VERTICAL,false);
StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
rvContainer.setLayoutManager(manager);
//3.适配器
BeautyAdapter beautyAdapter = new BeautyAdapter();
beautyAdapter.setData(context,beanList);
//设置适配器
rvContainer.setAdapter(beautyAdapter);
beautyAdapter.notifyDataSetChanged();
}
});
}
}
**
activitymain
**
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.activity.MainActivity">
<android.support.v7.widget.RecyclerView
android:id="@+id/rv_container"
android:layout_width="match_parent"
android:layout_height="match_parent"></android.support.v7.widget.RecyclerView>
</android.support.constraint.ConstraintLayout>
**
ecyclerview_item_layout
**
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
>
<TextView
android:id="@+id/tv_title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="标题" />
<ImageView
android:id="@+id/iv_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
**
Adapter
**
public class BeautyAdapter extends RecyclerView.Adapter<BeautyAdapter.SubViewHolder> {
ArrayList<BeautyBean.ResultsBean> beanList;
Context context;
//接收数据
public void setData(Context context, ArrayList<BeautyBean.ResultsBean> beanList) {
this.beanList = beanList;
this.context = context;
}
@NonNull
@Override
public SubViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int position) {
//填充子布局
View rootView = LayoutInflater.from(context).inflate(R.layout.recyclerview_item_layout, viewGroup, false);
//设置ViewHolder
SubViewHolder subViewHolder = new SubViewHolder(rootView);
return subViewHolder;
}
@Override
public void onBindViewHolder(@NonNull SubViewHolder subViewHolder, int position) {
subViewHolder.tvTitle.setText("创建时间是:" + beanList.get(position).getCreatedAt());
//Glide加载图片
Glide.with(context).load(beanList.get(position).getUrl()).into(subViewHolder.ivIcon);
}
@Override
public int getItemCount() {
//条目数
return beanList.size();
}
public class SubViewHolder extends RecyclerView.ViewHolder {
@BindView(R.id.tv_title)
TextView tvTitle;
@BindView(R.id.iv_icon)
ImageView ivIcon;
public SubViewHolder(@NonNull View itemView) {
super(itemView);
//ButterKnife绑定
//注意,在这里,Bing需要传入绑定的类对象,传入绑定的试图对象
ButterKnife.bind(this,itemView);
}
}
}
**
Constant
**
public class Constant {
public static final String BEAUTY_URL = "http://gank.io/api/data/福利/10/1";
public static final String REQUEST_URL = "http://api.tianapi.com/meinv/?key=0a62585968ff23c66d052aec24bc6cc1&num=1";
}
**
Bean
**
public class BeautyBean {
/**
* error : false
* results : [{"_id":"5c12216d9d21223f5a2baea2","createdAt":"2018-12-13T09:07:57.2Z","desc":"2018-12-13","publishedAt":"2018-12-13T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqgy1fy58bi1wlgj30sg10hguu.jpg","used":true,"who":"lijinshanmx"},{"_id":"5bfe1a5b9d2122309624cbb7","createdAt":"2018-11-28T04:32:27.338Z","desc":"2018-11-28","publishedAt":"2018-11-28T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqgy1fxno2dvxusj30sf10nqcm.jpg","used":true,"who":"lijinshanmx"},{"_id":"5bf22fd69d21223ddba8ca25","createdAt":"2018-11-19T03:36:54.950Z","desc":"2018-11-19","publishedAt":"2018-11-19T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqgy1fxd7vcz86nj30qo0ybqc1.jpg","used":true,"who":"lijinshanmx"},{"_id":"5be14edb9d21223dd50660f8","createdAt":"2018-11-06T08:20:43.656Z","desc":"2018-11-06","publishedAt":"2018-11-06T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqgy1fwyf0wr8hhj30ie0nhq6p.jpg","used":true,"who":"lijinshanmx"},{"_id":"5bcd71979d21220315c663fc","createdAt":"2018-10-22T06:43:35.440Z","desc":"2018-10-22","publishedAt":"2018-10-22T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqgy1fwgzx8n1syj30sg15h7ew.jpg","used":true,"who":"lijinshanmx"},{"_id":"5bc434ac9d212279160c4c9e","createdAt":"2018-10-15T06:33:16.497Z","desc":"2018-10-15","publishedAt":"2018-10-15T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqly1fw8wzdua6rj30sg0yc7gp.jpg","used":true,"who":"lijinshanmx"},{"_id":"5bbb0de09d21226111b86f1c","createdAt":"2018-10-08T07:57:20.978Z","desc":"2018-10-08","publishedAt":"2018-10-08T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqly1fw0vdlg6xcj30j60mzdk7.jpg","used":true,"who":"lijinshanmx"},{"_id":"5ba206ec9d2122610aba3440","createdAt":"2018-09-19T08:21:00.295Z","desc":"2018-09-19","publishedAt":"2018-09-19T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqly1fvexaq313uj30qo0wldr4.jpg","used":true,"who":"lijinshanmx"},{"_id":"5b9771a29d212206c1b383d0","createdAt":"2018-09-11T07:41:22.491Z","desc":"2018-09-11","publishedAt":"2018-09-11T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqly1fv5n6daacqj30sg10f1dw.jpg","used":true,"who":"lijinshanmx"},{"_id":"5b830bba9d2122031f86ee51","createdAt":"2018-08-27T04:21:14.703Z","desc":"2018-08-27","publishedAt":"2018-08-28T00:00:00.0Z","source":"web","type":"福利","url":"https://ws1.sinaimg.cn/large/0065oQSqly1fuo54a6p0uj30sg0zdqnf.jpg","used":true,"who":"lijinshanmx"}]
*/
private boolean error;
private List<ResultsBean> results;
public boolean isError() {
return error;
}
public void setError(boolean error) {
this.error = error;
}
public List<ResultsBean> getResults() {
return results;
}
public void setResults(List<ResultsBean> results) {
this.results = results;
}
public static class ResultsBean {
/**
* _id : 5c12216d9d21223f5a2baea2
* createdAt : 2018-12-13T09:07:57.2Z
* desc : 2018-12-13
* publishedAt : 2018-12-13T00:00:00.0Z
* source : web
* type : 福利
* url : https://ws1.sinaimg.cn/large/0065oQSqgy1fy58bi1wlgj30sg10hguu.jpg
* used : true
* who : lijinshanmx
*/
private String _id;
private String createdAt;
private String desc;
private String publishedAt;
private String source;
private String type;
private String url;
private boolean used;
private String who;
public String get_id() {
return _id;
}
public void set_id(String _id) {
this._id = _id;
}
public String getCreatedAt() {
return createdAt;
}
public void setCreatedAt(String createdAt) {
this.createdAt = createdAt;
}
public String getDesc() {
return desc;
}
public void setDesc(String desc) {
this.desc = desc;
}
public String getPublishedAt() {
return publishedAt;
}
public void setPublishedAt(String publishedAt) {
this.publishedAt = publishedAt;
}
public String getSource() {
return source;
}
public void setSource(String source) {
this.source = source;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getUrl() {
return url;
}
public void setUrl(String url) {
this.url = url;
}
public boolean isUsed() {
return used;
}
public void setUsed(boolean used) {
this.used = used;
}
public String getWho() {
return who;
}
public void setWho(String who) {
this.who = who;
}
}
}