这篇文章主要为大家详细介绍了Android中RecyclerView实现商品分类功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
本文实例为大家分享了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) {
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程学习网。
沃梦达教程
本文标题为:Android中RecyclerView实现商品分类功能


基础教程推荐
猜你喜欢
- iOS中如何判断当前网络环境是2G/3G/4G/5G/WiFi 2023-06-18
- Android Compose自定义TextField实现自定义的输入框 2023-05-13
- iOS开发 全机型适配解决方法 2023-01-14
- Android实现短信验证码输入框 2023-04-29
- MVVMLight项目Model View结构及全局视图模型注入器 2023-05-07
- IOS获取系统相册中照片的示例代码 2023-01-03
- iOS Crash常规跟踪方法及Bugly集成运用详细介绍 2023-01-18
- iOS开发使用XML解析网络数据 2022-11-12
- Flutter进阶之实现动画效果(三) 2022-10-28
- Android开发Compose集成高德地图实例 2023-06-15