一
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <ImageView android:id="@+id/scan" android:layout_width="0dp" android:layout_weight="1" android:padding="10dp" android:layout_height="wrap_content" android:src="@mipmap/sao_hei"/> <SearchView android:layout_width="0dp" android:layout_weight="10" android:background="@drawable/redio" android:layout_height="wrap_content" /> <ImageView android:id="@+id/message" android:layout_width="0dp" android:layout_weight="1" android:padding="10dp" android:layout_height="wrap_content" android:src="@mipmap/msg_hei"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="horizontal"> <android.support.v7.widget.RecyclerView android:id="@+id/recyclerview_mainclass" android:layout_width="0dp" android:layout_weight="2" android:layout_height="wrap_content"> </android.support.v7.widget.RecyclerView> <ScrollView android:layout_width="0dp" android:layout_weight="5" android:layout_height="wrap_content"> <LinearLayout android:id="@+id/linear" android:layout_width="match_parent" android:layout_height="wrap_content" android:orientation="vertical"> </LinearLayout> </ScrollView> </LinearLayout> </LinearLayout>
二
封装bean
三
package com.example.logonandlingin.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.logonandlingin.R; import com.example.logonandlingin.bean.MainClassify; import java.util.List; /** * Created by 。。。。 on 2018/10/18. */ public class MainClassAdapter extends RecyclerView.Adapter<MainClassAdapter.ViewHolder> { private Context context; private List<MainClassify.DataBean> list; public MainClassAdapter(Context context, List<MainClassify.DataBean> list) { this.context = context; this.list = list; } public interface OnItemClickListener{ void OnItemClick(View view,int position); } private OnItemClickListener clickListener; public void setOnItemClickListener(OnItemClickListener clickListener){ this.clickListener=clickListener; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v=View.inflate(context, R.layout.item_mainclass,null); ViewHolder holder=new ViewHolder(v); return holder; } @Override public void onBindViewHolder(@NonNull ViewHolder holder, final int position) { holder.txtname.setText(list.get(position).getName()); holder.itemView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(clickListener!=null){ clickListener.OnItemClick(v,position); } } }); } @Override public int getItemCount() { return list.size(); } class ViewHolder extends RecyclerView.ViewHolder { private TextView txtname; public ViewHolder(View itemView) { super(itemView); txtname = itemView.findViewById(R.id.txt_name); } } }
四
package com.example.logonandlingin.adapter; import android.content.Context; import android.support.annotation.NonNull; import android.support.v7.widget.RecyclerView; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import com.bumptech.glide.Glide; import com.example.logonandlingin.R; import com.example.logonandlingin.bean.SubClass; import java.util.List; /** * Created by 。。。。 on 2018/10/19. */ public class SubClassAdapter extends RecyclerView.Adapter<SubClassAdapter.ViewHolder> { private Context context; private List<SubClass.DataBean.ListBean> list; public SubClassAdapter(Context context, List<SubClass.DataBean.ListBean> list) { this.context = context; this.list = list; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View v=View.inflate(context, R.layout.item_subclass,null); ViewHolder holder=new ViewHolder(v); return holder; } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { Glide.with(context).load(list.get(position).getIcon()).into(holder.imageView); holder.textView.setText(list.get(position).getName()); } @Override public int getItemCount() { return list.size(); } class ViewHolder extends RecyclerView.ViewHolder { private ImageView imageView; private TextView textView; public ViewHolder(View itemView) { super(itemView); imageView = itemView.findViewById(R.id.img_subclass); textView = itemView.findViewById(R.id.txt_subclassname); } } }
五
<?xml version="1.0" encoding="utf-8"?> <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/txt_name" android:padding="20dp" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
六
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center" android:orientation="vertical"> <ImageView android:id="@+id/img_subclass" android:layout_width="50dp" android:layout_height="50dp" /> <TextView android:id="@+id/txt_subclassname" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </LinearLayout>
七
package com.example.logonandlingin.classify; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.DividerItemDecoration; import android.support.v7.widget.GridLayoutManager; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.example.logonandlingin.R; import com.example.logonandlingin.adapter.MainClassAdapter; import com.example.logonandlingin.adapter.SubClassAdapter; import com.example.logonandlingin.bean.MainClassify; import com.example.logonandlingin.bean.SubClass; import com.example.logonandlingin.presenter.ClassPresenter; import com.example.logonandlingin.view.ClassView; import com.uuzuche.lib_zxing.activity.CaptureActivity; import com.uuzuche.lib_zxing.activity.CodeUtils; import java.util.ArrayList; import java.util.List; public class ClassifyFragment extends Fragment implements ClassView { private static final String TAG = "ClassifyFragment"; private ImageView scan; private ImageView message; private RecyclerView recyclerView; private RecyclerView.LayoutManager layoutManager; private List<MainClassify.DataBean> mainClassifies; private ClassPresenter classPresenter; private MainClassAdapter adapter; private LinearLayout linearLayout; private List<SubClass.DataBean> beanList; private SubClassAdapter subClassAdapter; private RecyclerView rvsubclass; private TextView textView; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View v = inflater.inflate(R.layout.fragment_classify, container, false); scan = v.findViewById(R.id.scan); message = v.findViewById(R.id.message); //主类 recyclerView = v.findViewById(R.id.recyclerview_mainclass); linearLayout = v.findViewById(R.id.linear); mainClassifies = new ArrayList<>(); layoutManager = new LinearLayoutManager(getActivity()); recyclerView.setLayoutManager(layoutManager); recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL)); adapter = new MainClassAdapter(getActivity(), mainClassifies); recyclerView.setAdapter(adapter); classPresenter = new ClassPresenter(); beanList = new ArrayList<>(); classPresenter.attach(this); classPresenter.mainclass(); adapter.setOnItemClickListener(new MainClassAdapter.OnItemClickListener() { @Override public void OnItemClick(View view, int position) { MainClassify.DataBean bean = mainClassifies.get(position); classPresenter.subclass("http://www.zhaoapi.cn/product/getProductCatagory?cid=" + bean.getCid()); // Log.i(TAG, "OnItemClick: " + 543554340); Toast.makeText(getContext(),""+bean.getCid(),Toast.LENGTH_SHORT).show(); } }); QR(); return v; } private void QR() { scan.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(getActivity(), CaptureActivity.class); startActivityForResult(intent, 1000); } }); } public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 1000) { //处理扫描结果(在界面上显示) if (null != data) { Bundle bundle = data.getExtras(); if (bundle == null) { return; } if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_SUCCESS) { String result = bundle.getString(CodeUtils.RESULT_STRING); Toast.makeText(getActivity(), "解析结果:" + result, Toast.LENGTH_LONG).show(); } else if (bundle.getInt(CodeUtils.RESULT_TYPE) == CodeUtils.RESULT_FAILED) { Toast.makeText(getActivity(), "解析二维码失败", Toast.LENGTH_LONG).show(); } } } } @Override public void getmainclass(MainClassify mainClassify) { if (mainClassify != null) { List<MainClassify.DataBean> classifyList = mainClassify.getData(); if (mainClassify != null) { mainClassifies.clear(); mainClassifies.addAll(classifyList); adapter.notifyDataSetChanged(); } } } @Override public void getsubclass(List<SubClass.DataBean> list) { if(list!=null){ linearLayout.removeAllViews(); for (int i = 0; i < list.size(); i++) { textView = new TextView(getActivity()); textView.setText(list.get(i).getName()); rvsubclass = new RecyclerView(getActivity()); subClassAdapter = new SubClassAdapter(getActivity(), list.get(i).getList()); rvsubclass.setAdapter(subClassAdapter); RecyclerView.LayoutManager layoutManager = new GridLayoutManager(getActivity(), 3); rvsubclass.setLayoutManager(layoutManager); linearLayout.addView(textView); linearLayout.addView(rvsubclass); beanList.clear(); beanList.addAll(list); subClassAdapter.notifyDataSetChanged(); } } } @Override public void failed(Exception e) { } @Override public void onResume() { super.onResume(); classPresenter.subclass("http://www.zhaoapi.cn/product/getProductCatagory?cid=1"); } }
八
package com.example.logonandlingin.presenter; import com.example.logonandlingin.bean.MainClassify; import com.example.logonandlingin.bean.SubClass; import com.example.logonandlingin.callback.ICallBack; import com.example.logonandlingin.classify.ClassifyFragment; import com.example.logonandlingin.model.Model; import com.example.logonandlingin.view.ClassView; import com.google.gson.reflect.TypeToken; import java.lang.reflect.Type; import java.util.List; /** * Created by 。。。。 on 2018/10/18. */ public class ClassPresenter { private ClassView iv; private Model model; public void attach(ClassView iv) { this.iv = iv; model = new Model(); } public void mainclass(){ Type type=new TypeToken<MainClassify>(){}.getType(); model.login("http://www.zhaoapi.cn/product/getCatagory", new ICallBack() { @Override public void onsuccess(Object o) { iv.getmainclass((MainClassify) o); } @Override public void onFailed(Exception e) { iv.failed(e); } },type); } public void subclass(String url){ Type type=new TypeToken<SubClass>(){}.getType(); model.login(url, new ICallBack() { @Override public void onsuccess(Object o) { SubClass subClass= (SubClass) o; iv.getsubclass(subClass.getData()); } @Override public void onFailed(Exception e) { iv.failed(e); } },type); } }