防京东的分类联动

xml文件

  //Main层

<?xml version="1.0" encoding="utf-8"?>
<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="horizontal"
  >

    <android.support.v7.widget.RecyclerView
        android:id="@+id/left_view"
        android:layout_width="130dp"
        android:layout_height="match_parent" />

    <ExpandableListView
        android:id="@+id/right_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </ExpandableListView>

</LinearLayout>

Left  xml:

<?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="wrap_content"
    android:orientation="vertical"
    >
    <TextView
        android:id="@+id/zuo_mz"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:gravity="center"
        android:text="名字"
        android:layout_gravity="center"
        />
</LinearLayout>

right  xml:

<?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="wrap_content"
    android:orientation="vertical"
    >

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/Right_title"
    android:textSize="20sp"
    />
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/right_recycler"
        >

    </android.support.v7.widget.RecyclerView>
</LinearLayout>

//shopping:

  

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    xmlns:app="http://schemas.android.com/apk/res-auto">

    <com.facebook.drawee.view.SimpleDraweeView
        android:layout_width="100dp"
        android:layout_height="100dp"
        android:id="@+id/shoppingview"
        android:padding="10dp"
        app:roundedCornerRadius="50dp"
        />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/s_title"
        android:layout_toRightOf="@id/shoppingview"
        android:layout_marginLeft="20dp"

        />
</RelativeLayout>

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    xmlns:android="http://schemas.android.com/apk/res/android">
    <android.support.v7.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/shopping_recycler"
        >

    </android.support.v7.widget.RecyclerView>
</LinearLayout>

 

 

//retrofit封装类

package myjd.jd.com.monikao.utils;

import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava.RxJavaCallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

public class RetrofitUnitl {

    private Retrofit mRetrofit;
    private String baseUrl;
    OkHttpClient client;
    private static RetrofitUnitl mRetrofitManager;
    private RetrofitUnitl(String baseUrl, OkHttpClient client){
        this.baseUrl=baseUrl;
        this.client=client;
        initRetrofit();
    }
    public static synchronized RetrofitUnitl getInstance(String baseUrl,OkHttpClient client){
        if (mRetrofitManager == null){
            mRetrofitManager = new RetrofitUnitl(baseUrl,client);
        }
        return mRetrofitManager;
    }
    private void initRetrofit() {
        mRetrofit = new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJavaCallAdapterFactory.create())
                .client(client)
                .build();
    }
    public <T> T setCreate(Class<T> reqServer) {
        return mRetrofit.create(reqServer);
    }
}

//model:

package myjd.jd.com.monikao.fenlei.model;

import myjd.jd.com.monikao.bean.LeftBean;
import myjd.jd.com.monikao.bean.RightBean;
import myjd.jd.com.monikao.service.Api;
import myjd.jd.com.monikao.service.GetInterface;
import myjd.jd.com.monikao.utils.RetrofitUnitl;
import okhttp3.OkHttpClient;
import rx.Subscriber;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;

public class LeftModelImpl {

    LeftModel leftModel;

    public void setLeftModel(LeftModel leftModel) {
        this.leftModel = leftModel;
    }

    //左面请求
    public void Left(){
        //添加拦截器
        OkHttpClient okHttpClient = new OkHttpClient.Builder()
                .build();
        //请求数据
        RetrofitUnitl.getInstance(Api.BAST,okHttpClient)
                     .setCreate(GetInterface.class)
                     .getLeft()
                     .observeOn(AndroidSchedulers.mainThread())
                     .subscribeOn(Schedulers.io())
                     .subscribe(new Subscriber<LeftBean>() {
                         @Override
                         public void onCompleted() {

                         }

                         @Override
                         public void onError(Throwable e) {

                         }

                         @Override
                         public void onNext(LeftBean leftBean) {
                             leftModel.onLeft(leftBean);
                         }
                     });
    }
    //右面请求
    public void Right(int cont){
        OkHttpClient ok = new OkHttpClient.Builder()
                .build();
        RetrofitUnitl.getInstance(Api.BAST,ok)
                .setCreate(GetInterface.class)
                .getRight(cont)
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Subscriber<RightBean>() {
                    @Override
                    public void onCompleted() {

                    }

                    @Override
                    public void onError(Throwable e) {

                    }

                    @Override
                    public void onNext(RightBean rightBean) {
                        leftModel.onRight(rightBean);
                    }
                });
    }
    public interface LeftModel {

        void onLeft(LeftBean leftBean);

        void onRight(RightBean rightBean);

    }
}

//presenter:

 

package myjd.jd.com.monikao.fenlei.presenter;

import myjd.jd.com.monikao.MainActivity;
import myjd.jd.com.monikao.bean.LeftBean;
import myjd.jd.com.monikao.bean.RightBean;
import myjd.jd.com.monikao.fenlei.model.LeftModelImpl;
import myjd.jd.com.monikao.fenlei.view.FenView;


public class LeftPresenterImpl implements LeftModelImpl.LeftModel {
    private FenView fenView;
    private LeftModelImpl leftModel;

    public LeftPresenterImpl(FenView fenView) {
        this.fenView=fenView;
        leftModel = new LeftModelImpl();
        leftModel.setLeftModel(this);
    }

    @Override
    public void onLeft(LeftBean leftBean) {
        fenView.onLeftSuccess(leftBean);
    }

    @Override
    public void onRight(RightBean rightBean) {
        fenView.onRightSuccess(rightBean);
    }
    //左侧调用
    public void  ShowPer(){
        leftModel.Left();
    }
    // 右侧调用
    public void FlShowYou(int cont){
        leftModel.Right(cont);
    }
}

//mainactivity:

package myjd.jd.com.monikao;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.ExpandableListView;

import com.facebook.drawee.backends.pipeline.Fresco;

import butterknife.BindView;
import butterknife.ButterKnife;
import myjd.jd.com.monikao.adapter.LeftAdapter;
import myjd.jd.com.monikao.adapter.RightAdapter;
import myjd.jd.com.monikao.bean.LeftBean;
import myjd.jd.com.monikao.bean.RightBean;
import myjd.jd.com.monikao.fenlei.presenter.LeftPresenterImpl;
import myjd.jd.com.monikao.fenlei.view.FenView;

public class MainActivity extends AppCompatActivity implements FenView{

    @BindView(R.id.left_view)
    RecyclerView leftView;
    @BindView(R.id.right_view)
    ExpandableListView rightView;
    private LeftPresenterImpl leftPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Fresco.initialize(this);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        leftPresenter = new LeftPresenterImpl(this);
        leftPresenter.ShowPer();
        leftPresenter.FlShowYou(1);
    }

    @Override
    public void onLeftSuccess(final LeftBean leftBean) {
         leftView.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));
         //适配器
        LeftAdapter adapter=new LeftAdapter(MainActivity.this,leftBean);
        leftView.setAdapter(adapter);
        adapter.setOnItemClickListener(new LeftAdapter.onItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                int id = leftBean.getData().get(position).getCid();
                leftPresenter.FlShowYou(id);

            }
        });
    }

    @Override
    public void onRightSuccess(RightBean rightBean) {
          RightAdapter adapter=new RightAdapter(MainActivity.this,rightBean);
          rightView.setAdapter(adapter);
        int count = rightView.getCount();
        for (int i = 0; i <count; i++) {
            rightView.expandGroup(i);
        }
        
 
    }
}

 

//leftasapter

package myjd.jd.com.monikao.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import myjd.jd.com.monikao.R;
import myjd.jd.com.monikao.bean.LeftBean;


public class LeftAdapter extends RecyclerView.Adapter<LeftAdapter.ViewHolder>{
    private Context context;
    private LeftBean leftBean;
    private onItemClickListener onItemClickListener;
    public LeftAdapter(Context context, LeftBean leftBean) {
        this.context = context;
        this.leftBean = leftBean;
    }
    public interface onItemClickListener{
        void onItemClick(View view,int position);
    }

    public void setOnItemClickListener(LeftAdapter.onItemClickListener onItemClickListener) {
        this.onItemClickListener = onItemClickListener;
    }

    @NonNull
    @Override
    public LeftAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.leftlayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final LeftAdapter.ViewHolder holder, int position) {
        holder.zuo_mz.setText(leftBean.getData().get(position).getName());
        if(onItemClickListener!=null){
            holder.zuo_mz.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int position = holder.getLayoutPosition();
                    onItemClickListener.onItemClick(holder.itemView,position);

                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return leftBean.getData().size();
    }

    class ViewHolder extends RecyclerView.ViewHolder{

        private TextView zuo_mz;

        public ViewHolder(View itemView) {
            super(itemView);
            zuo_mz = itemView.findViewById(R.id.zuo_mz);
        }
    }
}

//rightadapter:

package myjd.jd.com.monikao.adapter;

import android.content.Context;
import android.content.Intent;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseExpandableListAdapter;
import android.widget.TextView;

import myjd.jd.com.monikao.R;
import myjd.jd.com.monikao.ShoppingActivity;
import myjd.jd.com.monikao.bean.RightBean;
import retrofit2.http.POST;


public class RightAdapter extends BaseExpandableListAdapter{
    private Context context;
    private RightBean rightBean;

    public RightAdapter(Context context, RightBean rightBean) {
        this.context = context;
        this.rightBean = rightBean;
    }

    @Override
    public int getGroupCount() {
        return rightBean.getData().size();
    }

    @Override
    public int getChildrenCount(int i) {
        return 1;
    }

    @Override
    public Object getGroup(int i) {
        return rightBean.getData().get(i);
    }

    @Override
    public Object getChild(int i, int i1) {
        return rightBean.getData().get(i).getList().get(i);
    }

    @Override
    public long getGroupId(int i) {
        return i;
    }

    @Override
    public long getChildId(int i, int i1) {
        return i1;
    }

    @Override
    public boolean hasStableIds() {
        return true;
    }

    @Override
    public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
        View v = View.inflate(context, R.layout.rightlayout, null);
        TextView title=v.findViewById(R.id.Right_title);
        title.setText(rightBean.getData().get(i).getName());
        return v;
    }

    @Override
    public View getChildView(int i, int i1, boolean b, View view, ViewGroup viewGroup) {
        View v = View.inflate(context, R.layout.rightlayout, null);
        RecyclerView right_recycler=v.findViewById(R.id.right_recycler);
        right_recycler.setLayoutManager(new GridLayoutManager(context,3));
        childAdapter chapter=new  childAdapter(context,rightBean,i,i1);
        right_recycler.setAdapter(chapter);
        chapter.setOnItemCilckListener(new childAdapter.OnItemCilckListener() {
            @Override
            public void onItemClick(View view, int position) {
                Intent intent=new Intent(context,ShoppingActivity.class);
                context.startActivity(intent);
            }
        });
        return v;
    }

    @Override
    public boolean isChildSelectable(int i, int i1) {
        return true;
    }
}

//childrenadapter:

  

package myjd.jd.com.monikao.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import myjd.jd.com.monikao.R;
import myjd.jd.com.monikao.bean.RightBean;

/**
 * Created by 小薇 on 2018/8/11.
 */

class childAdapter extends RecyclerView.Adapter<childAdapter.ViewHolder>{
    private Context context;
    private RightBean rightBean;
    private int i,i1;
   public OnItemCilckListener onItemCilckListener;
    public childAdapter(Context context, RightBean rightBean, int i, int i1) {
        this.context = context;
        this.rightBean = rightBean;
        this.i = i;
        this.i1 = i1;
    }
   public interface OnItemCilckListener{
        void onItemClick(View view,int position);
   }

    public void setOnItemCilckListener(OnItemCilckListener onItemCilckListener) {
        this.onItemCilckListener = onItemCilckListener;
    }

    @NonNull
    @Override
    public childAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.childlayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final childAdapter.ViewHolder holder, final int position) {
        holder.tv_child.setText(rightBean.getData().get(i).getList().get(i1).getName());
        String path = rightBean.getData().get(i).getList().get(i1).getIcon().split("\\|")[0];
        holder.img_child.setImageURI(path);
        if(onItemCilckListener!=null){
            holder.img_child.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    int layoutPosition = holder.getLayoutPosition();
                     onItemCilckListener.onItemClick(holder.itemView,position);

                }
            });
        }
    }

    @Override
    public int getItemCount() {
        return rightBean.getData().get(i).getList().size();
    }

     class ViewHolder extends RecyclerView.ViewHolder{

         private SimpleDraweeView img_child;
         private  TextView tv_child;

         public ViewHolder(View itemView) {
             super(itemView);
             img_child = itemView.findViewById(R.id.img_child);
             tv_child = itemView.findViewById(R.id.tv_child);
         }
     }
}

//shoppingctivity

package myjd.jd.com.monikao;

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.util.Log;

import java.util.List;

import butterknife.BindView;
import butterknife.ButterKnife;
import greendao.greeandaobeanDao;
import myjd.jd.com.monikao.adapter.ShoppingAdapter;
import myjd.jd.com.monikao.bean.ShoppingBean;
import myjd.jd.com.monikao.bean.greeandaobean;
import myjd.jd.com.monikao.shopping.presenter.ShoppingPresenterImpl;
import myjd.jd.com.monikao.shopping.view.ShoppingView;
import myjd.jd.com.monikao.utils.myApplication;

public class ShoppingActivity extends AppCompatActivity implements ShoppingView{

    @BindView(R.id.shopping_recycler)
    RecyclerView shoppingRecycler;
    private ShoppingPresenterImpl shoppingPresenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_shopping);
        ButterKnife.bind(this);
        shoppingPresenter = new ShoppingPresenterImpl(this);
        shoppingPresenter.getData("笔记本",1);
        shoppingRecycler.setLayoutManager(new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false));

    }
    public greeandaobeanDao greeandaobeanDao(){
        return myApplication.getApplication().getDaoSession().getGreeandaobeanDao();
    }


    @Override
    public void onSuccess(ShoppingBean shoppingBean) {
        List<ShoppingBean.DataBean> data = shoppingBean.getData();
        ShoppingAdapter adapter=new ShoppingAdapter(ShoppingActivity.this,data);
        shoppingRecycler.setAdapter(adapter);
        for (int i = 0; i < data.size(); i++) {
            greeandaobean greeandaobean = new greeandaobean(null,data.get(i).getTitle(),data.get(i).getPrice());
            greeandaobeanDao().insert(greeandaobean);

        }
        //查询
        greeandaobean load = greeandaobeanDao().load((long) 1f);
        Log.i("aaa",load.getName());

    }

    @Override
    public void onError(int code) {

    }
}

//model presenter  view........

//shoppingadapter:

package myjd.jd.com.monikao.adapter;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

import myjd.jd.com.monikao.R;
import myjd.jd.com.monikao.bean.ShoppingBean;

/**
 * Created by 小薇 on 2018/8/12.
 */

public class ShoppingAdapter extends RecyclerView.Adapter<ShoppingAdapter.ViewHolder>{
    private Context context;
    private List<ShoppingBean.DataBean> dataBeans;

    public ShoppingAdapter(Context context, List<ShoppingBean.DataBean> dataBeans) {
        this.context = context;
        this.dataBeans = dataBeans;
    }

    @NonNull
    @Override
    public ShoppingAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.shoppinglayout, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull ShoppingAdapter.ViewHolder holder, int position) {
         holder.t_title.setText(dataBeans.get(position).getTitle());
        String path = dataBeans.get(position).getImages().split("\\|")[0];
        holder.ion.setImageURI(path);

    }

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

     class ViewHolder extends RecyclerView.ViewHolder {

         private  TextView t_title;
         private SimpleDraweeView ion;

         public ViewHolder(View itemView) {
             super(itemView);
             t_title = itemView.findViewById(R.id.s_title);
             ion = itemView.findViewById(R.id.shoppingview);
         }
     }
}

 

 

//greenDao工具类

package myjd.jd.com.monikao.utils;

import android.app.Application;
import android.database.sqlite.SQLiteDatabase;

import greendao.DaoMaster;
import greendao.DaoSession;


public class myApplication extends Application {
    private static  myApplication application;
    private DaoMaster daoMaster;
    private DaoSession daoSession;

    public static myApplication getApplication(){
        return application;
    }
    @Override
    public void onCreate() {
        super.onCreate();
        application=this;
        createDb();
    }

    private void createDb() {
        DaoMaster.DevOpenHelper devOpenHelper=new DaoMaster.DevOpenHelper(this,"greendao.db");
        SQLiteDatabase db = devOpenHelper.getWritableDatabase();
        daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }
    public DaoSession getDaoSession(){
        return daoSession;
    }
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值