網站首頁 編程語言 正文
本文實例為大家分享了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
- 上一篇:C語言數據結構之二分法查找詳解_C 語言
- 下一篇:C語言棧之順序棧_C 語言
相關推薦
- 2022-09-05 RocketMQ 4.9.4使用(五)關閉info日志打印
- 2022-10-26 Go?語言數據結構之雙鏈表學習教程_Golang
- 2022-08-31 C++淺析類與對象基礎點_C 語言
- 2022-10-26 Android?Framework層獲取及處理按鍵事件流程_Android
- 2022-01-11 Css設置border從中間向兩邊的顏色漸進效果
- 2022-11-15 C++構造析構賦值運算函數應用詳解_C 語言
- 2022-06-17 C語言深入講解棧與堆和靜態存儲區的使用_C 語言
- 2022-03-15 box-shadow上下左右四個邊框設置陰影樣式
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支