Android中RecyclerView實現(xiàn)商品分類功能
本文實例為大家分享了Android中RecyclerView實現(xiàn)商品分類功能的具體代碼,供大家參考,具體內(nèi)容如下
三個個RecyclerView實現(xiàn)
//左邊的布局
?<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="阿薩德發(fā)的" ? ? ? ? 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) { ? ? } }
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Android7.0開發(fā)實現(xiàn)Launcher3去掉應(yīng)用抽屜的方法詳解
這篇文章主要介紹了Android7.0開發(fā)實現(xiàn)Launcher3去掉應(yīng)用抽屜的方法,結(jié)合實例形式分析了Android7.0 Launcher3調(diào)整界面布局的相關(guān)操作技巧與注意事項,需要的朋友可以參考下2017-11-11Android使用RollViewPager實現(xiàn)輪播圖
這篇文章主要為大家詳細(xì)介紹了Android使用RollViewPager實現(xiàn)輪播圖,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2021-04-04