日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

Android中RecyclerView實現商品分類功能_Android

作者:WWWW.COM ? 更新時間: 2022-04-16 編程語言

本文實例為大家分享了Android中RecyclerView實現商品分類功能的具體代碼,供大家參考,具體內容如下

三個個RecyclerView實現

//左邊的布局

?<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="50dp"
? ? android:orientation="vertical">

? ? <TextView
? ? ? ? android:id="@+id/tv_name"
? ? ? ? android:textSize="18sp"
? ? ? ? android:text="阿薩德發的"
? ? ? ? android:gravity="center"
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent" />
</LinearLayout>

//右邊的布局

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="match_parent">

? ? <TextView
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:id="@+id/name"/>

? ? <android.support.v7.widget.RecyclerView
? ? ? ? android:layout_width="match_parent"
? ? ? ? android:layout_height="match_parent"
? ? ? ? android:id="@+id/right_recy"
? ? ? ? android:layout_below="@+id/name"/>
</RelativeLayout>

//子布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
? ? android:layout_width="match_parent"
? ? android:layout_height="wrap_content"
? ? android:orientation="vertical">

? ? <ImageView
? ? ? ? android:id="@+id/image2"
? ? ? ? android:layout_width="90dp"
? ? ? ? android:layout_height="90dp" />

? ? <TextView
? ? ? ? android:layout_width="wrap_content"
? ? ? ? android:layout_height="wrap_content"
? ? ? ? android:id="@+id/title1" />
</LinearLayout>

//定義一個接口

public interface CallBack {
void onSuccess(List<LeftBean.DataBean> list);
void onFailer(String error);
}

//左邊的Model層

public class LeftModel {

? ? private ?String path="http://www.zhaoapi.cn/product/getCatagory";
? ? public void getData(final CallBack callBack){
? ? ? ? OkHttp okHttp=new OkHttp();
? ? ? ? okHttp.get(path).getDataLiserner(new OkHttp.GetData() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void Data(String s) {
? ? ? ? ? ? ? ? Gson gson=new Gson();
? ? ? ? ? ? ? ? LeftBean json = gson.fromJson(s, LeftBean.class);
? ? ? ? ? ? ? ? List<LeftBean.DataBean> data = json.getData();
? ? ? ? ? ? ? ? if (data!=null){
? ? ? ? ? ? ? ? ? ? callBack.onSuccess(data);
? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? callBack.onFailer("失敗");
? ? ? ? ? ? ? ? }
? ? ? ? ? ? }
? ? ? ? });
? ? }
}

//左邊的Presenter層

public class LeftPresenter {
? ? private LeftView leftView;
? ? private final LeftModel leftModel;

? ? public LeftPresenter(LeftView leftView) {
? ? ? ? this.leftView = leftView;
? ? ? ? leftModel = new LeftModel();
? ? }

? ? public void showLeft(){
? ? ? ? leftModel.getData(new CallBack() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onSuccess(List<LeftBean.DataBean> list) {
? ? ? ? ? ? ? ? leftView.onSuccess(list);
? ? ? ? ? ? }

? ? ? ? ? ? @Override
? ? ? ? ? ? public void onFailer(String error) {
? ? ? ? ? ? ? ? leftView.Failer(error);
? ? ? ? ? ? }
? ? ? ? });
? ? }
}

//View層

public interface LeftView {
? ?void onSuccess(List<LeftBean.DataBean> list);
? ?void Failer(String error);
}

//左邊的適配器

public class LeftRecycAdapter extends RecyclerView.Adapter<LeftRecycAdapter.LeftViewHoler>{

? ? private Context mContext;
? ? private List<LeftBean.DataBean> list;

? ? public LeftRecycAdapter(Context mContext, List<LeftBean.DataBean> list) {
? ? ? ? this.mContext = mContext;
? ? ? ? this.list = list;
? ? }

? ? @NonNull
? ? @Override
? ? public LeftViewHoler onCreateViewHolder(@NonNull ViewGroup viewGroup, int ViewType) {
? ? ? ? View view = LayoutInflater.from(mContext).inflate(R.layout.left_item, viewGroup,false);
? ? ? ? LeftViewHoler leftViewHoler=new LeftViewHoler(view);
? ? ? ? return leftViewHoler;
? ? }

? ? @Override
? ? public void onBindViewHolder(@NonNull LeftViewHoler leftViewHoler, int position) {
? ? ? ? leftViewHoler.textView.setText(list.get(position).getName());
? ? }

? ? @Override
? ? public int getItemCount() {
? ? ? ? return list.size();
? ? }


? ? public class LeftViewHoler extends RecyclerView.ViewHolder {
? ? ? ? private TextView textView;
? ? ? ? public LeftViewHoler(@NonNull View itemView) {
? ? ? ? ? ? super(itemView);
? ? ? ? ? ? textView=itemView.findViewById(R.id.tv_name);
? ? ? ? ? ? textView.setOnClickListener(new View.OnClickListener() {
? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? public void onClick(View v) {
? ? ? ? ? ? ? ? ? ? onClickListener.onclick(v,getAdapterPosition());
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? }
? ? }

? ? public interface OnClickListener{
? ? ? ? void onclick(View view,int position);
? ? }

? ? OnClickListener onClickListener;

? ? public void setOnclickListener(OnClickListener onclickListener){
? ? ? ? this.onClickListener=onclickListener;
? ? }
}

開始右邊的了
//右邊的接口

public interface CallBackRight {
? ? void onSuccess2(List<RightBean.DataBean> list);
? ? void onFailer2(String error);
}

//右邊的Model層

public class RightModel {
? ?// private String path1="http://www.zhaoapi.cn/product/getProductCatagory?cid=3&tdsourcetag=s_pcqq_aiomsg";
? ? public void showright(final String cid2, final CallBackRight callBackRight){

? ? ? ? ? ? ? ? OkHttp okHttp=new OkHttp();
? ? ? ? ? ? ? ? okHttp.get(cid2).getDataLiserner(new OkHttp.GetData() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void Data(String s) {
? ? ? ? ? ? ? ? ? ? ? ? Gson gson=new Gson();
? ? ? ? ? ? ? ? ? ? ? ? RightBean json = gson.fromJson(s, RightBean.class);
? ? ? ? ? ? ? ? ? ? ? ? List<RightBean.DataBean> data = json.getData();
? ? ? ? ? ? ? ? ? ? ? ? if (data!=null){
? ? ? ? ? ? ? ? ? ? ? ? ? ? callBackRight.onSuccess2(data);
? ? ? ? ? ? ? ? ? ? ? ? }else {
? ? ? ? ? ? ? ? ? ? ? ? ? ? callBackRight.onFailer2("錯誤");
? ? ? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });


? ? }
}

//右邊的Presenter層

public class RightPresenter {
? ? private final RightModel rightModel;
? ? private RightView rightView;

? ? public RightPresenter(RightView rightView) {
? ? ? ? this.rightView = rightView;
? ? ? ? rightModel = new RightModel();
? ? }

? ? public void showright(String id){
? ? ? ? rightModel.showright(id, new CallBackRight() {
? ? ? ? ? ? @Override
? ? ? ? ? ? public void onSuccess2(List<RightBean.DataBean> list) {
? ? ? ? ? ? ? ? rightView.onSuccess2(list);
? ? ? ? ? ? }

? ? ? ? ? ? @Override
? ? ? ? ? ? public void onFailer2(String error) {
? ? ? ? ? ? ? ? rightView.onFailer2(error);
? ? ? ? ? ? }
? ? ? ? });
? ? }
}

//右邊的View層

public interface RightView {
? ? void onSuccess2(List<RightBean.DataBean> list);
? ? void onFailer2(String error);
}

//右邊的適配器

public class RightRecycAdapter extends RecyclerView.Adapter<RightRecycAdapter.ViewHolder> {

? ? private Context mContext;
? ? private List<RightBean.DataBean> list;

? ? public RightRecycAdapter(Context mContext, List<RightBean.DataBean> list) {
? ? ? ? this.mContext = mContext;
? ? ? ? this.list = list;
? ? }

? ? @NonNull
? ? @Override
? ? public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int ViewType) {
? ? ? ? View view = LayoutInflater.from(mContext).inflate(R.layout.right_item, viewGroup, false);
? ? ? ? ViewHolder viewHolder=new ViewHolder(view);
? ? ? ? return viewHolder;
? ? }

? ? @Override
? ? public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
? ? ? ? viewHolder.textView.setText(list.get(position).getName());
? ? ? ? List<RightBean.DataBean.ListBean> list = this.list.get(position).getList();
? ? ? ? GridLayoutManager gridLayoutManager=new GridLayoutManager(mContext,3);
? ? ? ? viewHolder.recyclerView.setLayoutManager(gridLayoutManager);
? ? ? ? ChildAdapter childAdapter=new ChildAdapter(mContext,list);
? ? ? ? viewHolder.recyclerView.setAdapter(childAdapter);
? ? }

? ? @Override
? ? public int getItemCount() {
? ? ? ? return list.size();
? ? }

? ? public class ViewHolder extends RecyclerView.ViewHolder {
? ? ? ? private TextView textView;
? ? ? ? private RecyclerView recyclerView;
? ? ? ? public ViewHolder(@NonNull View itemView) {
? ? ? ? ? ? super(itemView);
? ? ? ? ? ? textView=itemView.findViewById(R.id.name);
? ? ? ? ? ? recyclerView=itemView.findViewById(R.id.right_recy);
? ? ? ? }
? ? }
}

//子類適配器

public class ChildAdapter extends RecyclerView.Adapter<ChildAdapter.ViewHolder> {

? ? private Context context;
? ? private List<RightBean.DataBean.ListBean> list;

? ? public ChildAdapter(Context context, List<RightBean.DataBean.ListBean> list) {
? ? ? ? this.context = context;
? ? ? ? this.list = list;
? ? }

? ? @NonNull
? ? @Override
? ? public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int ViewType) {
? ? ? ? View view = LayoutInflater.from(context).inflate(R.layout.child, viewGroup, false);
? ? ? ? ViewHolder viewHolder=new ViewHolder(view);
? ? ? ? return viewHolder;
? ? }

? ? @Override
? ? public void onBindViewHolder(@NonNull ViewHolder viewHolder, int position) {
? ? ? ? viewHolder.textView.setText(list.get(position).getName());
? ? ? ? Picasso.with(context).load(list.get(position).getIcon()).into(viewHolder.imageView);
? ? }

? ? @Override
? ? public int getItemCount() {
? ? ? ? return list.size();
? ? }

? ? public class ViewHolder extends RecyclerView.ViewHolder {
? ? ? ? private ImageView imageView;
? ? ? ? private TextView textView;
? ? ? ? public ViewHolder(@NonNull View itemView) {
? ? ? ? ? ? super(itemView);
? ? ? ? ? ? imageView=itemView.findViewById(R.id.image2);
? ? ? ? ? ? textView=itemView.findViewById(R.id.title1);
? ? ? ? }
? ? }
}

//開始使用

public class Fragment1 extends Fragment implements LeftView,RightView {

? ? private View view;
? ? private RecyclerView left;
? ? private RecyclerView right;
? ? private RightPresenter rightPresenter;

? ? Handler handler=new Handler(){
? ? ? ? @Override
? ? ? ? public void handleMessage(Message msg) {
? ? ? ? ? ? super.handleMessage(msg);
? ? ? ? ? ? final List<LeftBean.DataBean> list = (List<LeftBean.DataBean>) msg.obj;
? ? ? ? ? ? LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
? ? ? ? ? ? left.setLayoutManager(linearLayoutManager);
? ? ? ? ? ? LeftRecycAdapter leftRecycAdapter=new LeftRecycAdapter(getActivity(),list);
? ? ? ? ? ? left.setAdapter(leftRecycAdapter);
? ? ? ? ? ? leftRecycAdapter.setOnclickListener(new LeftRecycAdapter.OnClickListener() {
? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? public void onclick(View view, int position) {
? ? ? ? ? ? ? ? ? ? int cid = list.get(position).getCid();
? ? ? ? ? ? ? ? ? ? rightPresenter.showright("http://www.zhaoapi.cn/product/getProductCatagory?cid="+cid);
? ? ? ? ? ? ? ? }
? ? ? ? ? ? });
? ? ? ? ? ? //List<RightBean.DataBean> list1 = (List<RightBean.DataBean>) msg.obj;

? ? ? ? }
? ? };

? ? @Nullable
? ? @Override
? ? public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
? ? ? ? view = inflater.inflate(R.layout.fragment_fragment1, container, false);
? ? ? ? initView();
? ? ? ? return view;
? ? }

? ? private void initView() {
? ? ? ? LeftPresenter leftPresenter=new LeftPresenter(this);
? ? ? ? leftPresenter.showLeft();
? ? ? ? left = (RecyclerView) view.findViewById(R.id.left_recy);
? ? ? ? right = (RecyclerView) view.findViewById(R.id.right_recy);
? ? ? ? rightPresenter = new RightPresenter(this);
? ? }

? ? @Override
? ? public void onSuccess(List<LeftBean.DataBean> list) {
? ? ? ? Message message = Message.obtain();
? ? ? ? message.obj=list;
? ? ? ? handler.sendMessage(message);
? ? }

? ? @Override
? ? public void Failer(String error) {

? ? }

? ? @Override
? ? public void onSuccess2(final List<RightBean.DataBean> list) {
? ? ? ? /*Message message = Message.obtain();
? ? ? ? message.obj=list;
? ? ? ? handler.sendMessage(message);*/


? ? ? ? ? ? ? ? handler.post(new Runnable() {
? ? ? ? ? ? ? ? ? ? @Override
? ? ? ? ? ? ? ? ? ? public void run() {
? ? ? ? ? ? ? ? ? ? ? ? LinearLayoutManager linear= new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false);
? ? ? ? ? ? ? ? ? ? ? ? right.setLayoutManager(linear);
? ? ? ? ? ? ? ? ? ? ? ? RightRecycAdapter rightRecycAdapter=new RightRecycAdapter(getActivity(),list);
? ? ? ? ? ? ? ? ? ? ? ? right.setAdapter(rightRecycAdapter);

? ? ? ? ? ? ? ? ? ? }
? ? ? ? ? ? ? ? });

}
? ? @Override
? ? public void onFailer2(String error) {

? ? }
}

原文鏈接:https://blog.csdn.net/qq_42805756/article/details/84349210

欄目分類
最近更新