依赖
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
implementation 'com.squareup.okhttp3:logging-interceptor:3.5.0'
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'com.android.support:recyclerview-v7:28.0.0-rc01'
implementation 'com.facebook.fresco:fresco:1.2.0'
xml主布局文件
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerview"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="208dp"
></android.support.v7.widget.RecyclerView>
分类布局
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<com.facebook.drawee.view.SimpleDraweeView
android:id="@+id/sdv"
android:layout_width="64dp"
android:layout_height="45dp"
android:layout_alignParentTop="true"
android:layout_marginLeft="15dp"
android:layout_marginTop="15dp"
android:src="@drawable/ic_launcher_background"
/>
<TextView
android:id="@+id/name"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:layout_below="@id/sdv"
android:layout_marginLeft="20dp"
android:text="TextView"
android:maxEms="4"
/>
</RelativeLayout>
model层
1.bean类
public class ClassifyBean {
private String code;
private DataBean data;
private String message;
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public DataBean getData() {
return data;
}
public void setData(DataBean data) {
this.data = data;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
public static class DataBean {
private List<DisplayBean> display;
public List<DisplayBean> getDisplay() {
return display;
}
public void setDisplay(List<DisplayBean> display) {
this.display = display;
}
public static class DisplayBean {
/**
* uid : 100180
* ordered : 0
* space : 售楼处/家居别墅/样板间
* bill : 0
* evaluate : 0
* nick_name : 刘卫军
* avatar : https://app.tuozhe8.com/uploads/avatar/091286e480d0ace52f3e965c462f0061100180.jpeg
* address : 广东
* charge : 价格面议
* intro : 主张以情感美学创造艺术空间,其美学取向分为人本取向与文本取向两种
*/
private String uid;
private String ordered;
private String space;
private String bill;
private String evaluate;
private String nick_name;
private String avatar;
private String address;
private String charge;
private String intro;
public String getUid() {
return uid;
}
public void setUid(String uid) {
this.uid = uid;
}
public String getOrdered() {
return ordered;
}
public void setOrdered(String ordered) {
this.ordered = ordered;
}
public String getSpace() {
return space;
}
public void setSpace(String space) {
this.space = space;
}
public String getBill() {
return bill;
}
public void setBill(String bill) {
this.bill = bill;
}
public String getEvaluate() {
return evaluate;
}
public void setEvaluate(String evaluate) {
this.evaluate = evaluate;
}
public String getNick_name() {
return nick_name;
}
public void setNick_name(String nick_name) {
this.nick_name = nick_name;
}
public String getAvatar() {
return avatar;
}
public void setAvatar(String avatar) {
this.avatar = avatar;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCharge() {
return charge;
}
public void setCharge(String charge) {
this.charge = charge;
}
public String getIntro() {
return intro;
}
public void setIntro(String intro) {
this.intro = intro;
}
}
}
}
2.ITask
public interface ITask {
public void getClassifyBean(String url, OkCallback callback);
}
3.Task
public class Task implements ITask {
@Override
public void getClassifyBean(String url, OkCallback callback) {
OK.getOk().doGet(url,callback);
}
}
Presenter层
1.
public interface BasePresenter {
void onDestroy();
}
2.
public interface IPresenter extends BasePresenter{
public void getClassifyData();
}
3.
public class MyPresenter implements IPresenter {
ITask task;
IView view;
public MyPresenter(MainActivity activity){
task=new Task();
view=activity;
}
@Override
public void getClassifyData() {
task.getClassifyBean("https://app.tuozhe8.com/api.php/api/Lists/designer?token=&version=1.7", new OkCallback() {
@Override
public void onUI(String json) {
Gson gson=new Gson();
ClassifyBean classifyBean = gson.fromJson(json, ClassifyBean.class);
List<ClassifyBean.DataBean.DisplayBean> display = classifyBean.getData().getDisplay();
view.getClassifyShow(display);
}
@Override
public void onFailed(String json) {
}
});
}
@Override
public void onDestroy() {
view=null;
}
}
View层
1.
public interface IView {
public void getClassifyShow(List<ClassifyBean.DataBean.DisplayBean>classifys);
}
2.适配器
public class ClassifyAdapter extends RecyclerView.Adapter<ClassifyAdapter.MyViewHolder> {
private Context context;
private List<ClassifyBean.DataBean.DisplayBean>list;
public ClassifyAdapter(Context context) {
this.context = context;
this.list=new ArrayList<>();
}
public void addData( List<ClassifyBean.DataBean.DisplayBean>Classifys){
this.list.addAll(Classifys);
notifyDataSetChanged();
}
@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view= LayoutInflater.from(context).inflate(R.layout.item_classify,viewGroup,false);
return new MyViewHolder(view);
}
@Override
public void onBindViewHolder(@NonNull MyViewHolder holder, int i) {
Uri uri=Uri.parse(list.get(i).getAvatar());
holder.sdv.setImageURI(uri);
holder.name.setText(list.get(i).getNick_name());
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder {
SimpleDraweeView sdv;
TextView name;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
sdv=itemView.findViewById(R.id.sdv);
name=itemView.findViewById(R.id.name);
}
}
}
activity
public class MainActivity extends AppCompatActivity implements IView{
private Banner banner;
IPresenter presenter;
private RecyclerView recyclerView;
private ClassifyAdapter classifyAdapter;
IProductPresenter productPresenter;
private RecyclerView recyclerView2;
private ProductAdapter productAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
presenter=new MyPresenter(this);
presenter.getClassifyData();
getClassify();
}
public void getClassify() {
recyclerView=findViewById(R.id.recyclerview);
recyclerView.setLayoutManager(new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.HORIZONTAL));
recyclerView.addItemDecoration(new RecyclerView.ItemDecoration() {
@Override
public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state){
outRect.left = 12 ;
outRect.top = 12;
outRect.top = 12;
}
});
classifyAdapter=new ClassifyAdapter(this);
recyclerView.setAdapter(classifyAdapter);
}
}