仿京东首页小分类
依賴
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.RecyclerViewandroid: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.SimpleDraweeViewandroid: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"/><TextViewandroid: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 {@Overridepublic 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;}@Overridepublic void getClassifyData() {task.getClassifyBean("https://app.tuozhe8.com/api.php/api/Lists/designer?token=&version=1.7", new OkCallback() {@Overridepublic 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);}@Overridepublic void onFailed(String json) {}});}@Overridepublic 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@Overridepublic MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {View view= LayoutInflater.from(context).inflate(R.layout.item_classify,viewGroup,false);return new MyViewHolder(view);}@Overridepublic 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());}@Overridepublic 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;@Overrideprotected 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() {@Overridepublic 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);}}?
總結
- 上一篇: Python3判断字母串中有多少单词
- 下一篇: 首页展示之轮播图