购物车/分类 /Fragment切换 全

0,Fragment切换

(1)MainActivity

public class MainActivity extends AppCompatActivity {

    private ViewPager viewPager;
    private RadioGroup radioGroup;
    private List<Fragment> list=new ArrayList<>();
    private MyFragmentAdapter myFragmentAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        viewPager = findViewById(R.id.main_viewpager);
        radioGroup = findViewById(R.id.main_radiogroup);
        list.add(new Fragment_Type());
        list.add(new Fragment_ShopCart());


        //创建fragment 适配器
        myFragmentAdapter = new MyFragmentAdapter(getSupportFragmentManager(),list);
       viewPager.setAdapter(myFragmentAdapter);


       //给radiogroup点击事件
        radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                   switch (checkedId){
                       case R.id.but_1:
                           viewPager.setCurrentItem(0);
                           break;
                       case R.id.but_2:
                           viewPager.setCurrentItem(1);
                           break;
                   }

            }
        });

        //给viewpager点击事件
        viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
            @Override
            public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {

            }

            @Override
            public void onPageSelected(int position) {
                switch (position){
                    case 0:
                      radioGroup.check(R.id.but_1);
                        break;

                    case 1:
                       radioGroup.check(R.id.but_2);
                        break;
                }
            }

            @Override
            public void onPageScrollStateChanged(int state) {

            }
        });
    }
}

(2)pageAdapter

public class MyFragmentAdapter extends FragmentPagerAdapter{
    private List<Fragment> list;


    public MyFragmentAdapter(FragmentManager fm, List<Fragment> list) {
        super(fm);
        this.list = list;
    }

    @Override
    public Fragment getItem(int position) {
        return list.get(position);
    }

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

 

 

一,App

public class MyApp extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        Fresco.initialize(this);
    }


}

二,Base

(1)BasePresenter

public abstract class BasePresenter<V extends IView> {
    protected CompositeDisposable compositeDisposable=new CompositeDisposable();
    protected V view;


    public BasePresenter(V view) {
        this.view = view;
        initModel();
    }

    protected abstract void initModel();



    //解决内存泄漏
    void onDestory(){
        view=null;
        compositeDisposable.clear();
    }
}

(2)BaseActivity

public abstract class BaseActivity <P extends BasePresenter> extends Fragment{
    protected P presenter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = inflater.inflate(setView(), null);
        initview(view);
        initListener();
        return view;
    }

    protected abstract void initListener();

    protected abstract void initview(View view);

    protected abstract int setView();

    protected abstract void initData();

    protected abstract P presenterById();

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        if(presenter==null){
            presenter=presenterById();
            initData();
            return;
        }
    }


    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if(isVisibleToUser){
            if(presenter==null){
                return;
            }
           initData();
        }
    }


    //内存泄漏
    @Override
    public void onDestroy() {
        presenter.onDestory();
        super.onDestroy();
    }
}

三,RetrofitManager

public class RetrofitManager {
    //1.设置公共的url
    private static  String BASE_URL= ConstantApi.BASE_URL;
    private Retrofit retrofit;




    //2.默认持有者
    private static  class SingleHolder{
        private static final RetrofitManager INSENCE=new RetrofitManager(BASE_URL);
    }


    public RetrofitManager(String baseUrl) {
        retrofit=new Retrofit.Builder()
                .baseUrl(baseUrl)
                .addConverterFactory(GsonConverterFactory.create())
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .client(buildOkHttpClient())
                .build();

    }

    private OkHttpClient buildOkHttpClient() {
        return   new OkHttpClient.Builder()
                .connectTimeout(5000, TimeUnit.MILLISECONDS)
                .readTimeout(5000,TimeUnit.MILLISECONDS)
                .writeTimeout(5000,TimeUnit.MILLISECONDS)
                .build();
    }



    //设置公共方法
    public static RetrofitManager getDefault(){
        return SingleHolder.INSENCE;
    }

    public<T> T creat(Class<T> clazz){
        return  retrofit.create(clazz);
    }
}

四:ConfitApi 

public class ConstantApi {

    public static final String BASE_URL = "https://www.zhaoapi.cn/";


    //购物车
    public  static final String SHOPCART_URL ="product/getCarts";
    //删除购物车
    public  static final String DELETE_URL="product/deleteCart";

    //分类左边List展示
    public  static final String TYPE_URL="product/getCatagory";
    //分类 右边
    public  static final String right_URL ="product/getProductCatagory";
}

五,购物车/分类api

//查询购物车
@GET(ConstantApi.SHOPCART_URL)
Observable<ShopCartBean> shopcart(@Query("uid") int uid);


//删除购物车
@GET(ConstantApi.DELETE_URL)
Observable<DeleteBean> deleter(@Query("uid") String uid,@Query("pid") String pid);
//分类 左边listview
@GET(ConstantApi.TYPE_URL)
Observable<TypeLeftBean> typeleftlistview();

//右边
@GET(ConstantApi.right_URL)
Observable<TypeRightBean> typeRightview(@Query("cid") int cid);

六,TypeModel

public class TypeModel {

    //左边listview
    public Observable<TypeLeftBean> typeleftview(){
        return RetrofitManager.getDefault().creat(TypeApi.class).typeleftlistview();
    }


    //右边view
    public Observable<TypeRightBean> typerightview(int cid){
        return  RetrofitManager.getDefault().creat(TypeApi.class).typeRightview(cid);
    }
}

七,TypePresenter

public class TypePresenter extends BasePresenter<TypeView>{

    private TypeModel typeModel;

    public TypePresenter(TypeView view) {
        super(view);
    }


    //左边list
    public void typeLeft(){
        typeModel.typeleftview()
                .subscribeOn(Schedulers.io())
                .observeOn(AndroidSchedulers.mainThread())
                .subscribe(new Observer<TypeLeftBean>() {
                    @Override
                    public void onSubscribe(Disposable d) {
                        compositeDisposable.clear();
                    }

                    @Override
                    public void onNext(TypeLeftBean typeLeftBean) {
                          if(view!=null){
                              view.getSuccessLeft(typeLeftBean);
                          }
                    }

                    @Override
                    public void onError(Throwable e) {
                          if(view!=null){
                              view.getErrorLeft(e.toString());
                          }
                    }

                    @Override
                    public void onComplete() {

                    }
                });
    }



    //右边view
    public void typeRight(int cid){
      typeModel.typerightview(cid)
              .subscribeOn(Schedulers.io())
              .observeOn(AndroidSchedulers.mainThread())
              .subscribe(new Observer<TypeRightBean>() {
                  @Override
                  public void onSubscribe(Disposable d) {
                      compositeDisposable.clear();
                  }

                  @Override
                  public void onNext(TypeRightBean typeRightBean) {
                      if(view!=null){
                       view.getSuccessRight(typeRightBean);
                      }
                  }

                  @Override
                  public void onError(Throwable e) {
                      if(view!=null){
                          view.getErrorRight(e.toString());
                      }
                  }

                  @Override
                  public void onComplete() {

                  }
              });
    }

    @Override
    protected void initModel() {
        typeModel = new TypeModel();
    }
}

八,TypeFragment

public class Fragment_Type extends BaseActivity<TypePresenter> implements TypeView {
    private static final String TAG = "Fragment_Type====";
   private  int cid=1;
    private ListView listView;
    private RecyclerView recyclerView;
    private MyLeftAdapter myLeftAdapter;
    private MyRightAdapter1 myRightAdapter1;

    @Override
    protected void initListener() {

    }

    @Override
    protected void initview(View view) {
        listView = view.findViewById(R.id.main_typelistview);
        recyclerView = view.findViewById(R.id.main_type_recyleview);
    }

    @Override
    protected int setView() {
        return R.layout.type_frgament;
    }

    @Override
    protected void initData() {
     presenter.typeLeft();
     presenter.typeRight(cid);
    }

    @Override
    protected TypePresenter presenterById() {
        return new TypePresenter(this);
    }

    //左边listview
    @Override
    public void getSuccessLeft(TypeLeftBean json) {
        Log.d(TAG, "左边listview成功: "+json);
        final List<TypeLeftBean.DataBean> data = json.getData();

        //创建适配器
        myLeftAdapter = new MyLeftAdapter(data,getContext());
        listView.setAdapter(myLeftAdapter);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                int cid = data.get(position).getCid();
                presenter.typeRight(cid);
            }
        });
    }

    @Override
    public void getErrorLeft(String e) {

    }








    //右边view
    @Override
    public void getSuccessRight(TypeRightBean json) {
        List<TypeRightBean.DataBean> rightdata = json.getData();

        //创建适配器
        myRightAdapter1 = new MyRightAdapter1(getContext(),rightdata);
        LinearLayoutManager linearLayoutManager=new LinearLayoutManager(getContext());
        recyclerView.setLayoutManager(linearLayoutManager);
        recyclerView.setAdapter(myRightAdapter1);

    }

    @Override
    public void getErrorRight(String e) {

    }
}

九,适配器

(1)ListViewAdapter

public class MyLeftAdapter extends BaseAdapter {
   private  List<TypeLeftBean.DataBean> list;
   private Context context;


    public MyLeftAdapter(List<TypeLeftBean.DataBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

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

    @Override
    public Object getItem(int position) {
        return list.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder viewHolder;
        if(convertView==null){
            viewHolder=new ViewHolder();
            convertView=View.inflate(context,R.layout.type_left_adapter,null);
            viewHolder.textView=convertView.findViewById(R.id.adapter_left_tv);
            convertView.setTag(viewHolder);
        }else{
            viewHolder= (ViewHolder) convertView.getTag();
        }

        //赋值
        viewHolder.textView.setText(list.get(position).getName());
        return convertView;
    }

    class ViewHolder{
        TextView textView;
    }
}

(2)MyRight1Adapter

public class MyRightAdapter1 extends RecyclerView.Adapter<MyRightAdapter1.MyViewHolder> {
    private Context context;
    private List<TypeRightBean.DataBean> list;


    public MyRightAdapter1(Context context, List<TypeRightBean.DataBean> list) {
        this.context = context;
        this.list = list;
    }

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

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
        holder.textView.setText(list.get(position).getName());

        List<TypeRightBean.DataBean.ListBean> rightdata2 = this.list.get(position).getList();

        //创建适配器
      MyRightAdapter2 myRightAdapter2=new MyRightAdapter2(rightdata2,context);
        GridLayoutManager gridLayoutManager=new GridLayoutManager(context,3);
        holder.recyclerView.setLayoutManager(gridLayoutManager);
        holder.recyclerView.setAdapter(myRightAdapter2);
    }

    @Override
    public int getItemCount() {
        return list==null? 0:list.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        private TextView textView;
        private RecyclerView recyclerView;
        public MyViewHolder(View itemView) {
            super(itemView);
            textView=itemView.findViewById(R.id.type_right1_adapter_tv);
            recyclerView=itemView.findViewById(R.id.type_adapter_right1_recyleview);
        }
    }
}

(3)MyRight2Adapter

public class MyRightAdapter2 extends RecyclerView.Adapter<MyRightAdapter2.MyViewHolder>{
    private   List<TypeRightBean.DataBean.ListBean> list;
    private Context context;

    public MyRightAdapter2(List<TypeRightBean.DataBean.ListBean> list, Context context) {
        this.list = list;
        this.context = context;
    }

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

    @Override
    public void onBindViewHolder(@NonNull MyViewHolder holder, int position) {
           holder.textView.setText(list.get(position).getName());

        String icon = list.get(position).getIcon();
        holder.simpleDraweeView.setImageURI(Uri.parse(icon));
    }

    @Override
    public int getItemCount() {
        return list==null ? 0:list.size();
    }

    public class MyViewHolder extends RecyclerView.ViewHolder {
        private SimpleDraweeView simpleDraweeView;
        private TextView textView;
        public MyViewHolder(View itemView) {
            super(itemView);

            simpleDraweeView=itemView.findViewById(R.id.type_right2_adapter_simageview);
            textView=itemView.findViewById(R.id.type_right2_adapter_tv);
        }
    }
}

----------------------------------------------------------------------------------------------------------------------------------------------------------------

一,购物车 MyAddView

public class MyAddSubView extends LinearLayout implements View.OnClickListener {

    //定义加减器
    private int number=1;

    private TextView tv_remove,tv_number,tv_add;
    private View view;

    public MyAddSubView(Context context) {
        super(context,null);
    }

    public MyAddSubView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);



        //1.加载addview布局
        view = inflate(context, R.layout.shopcart_addsubview, this);

        //获取资源id
        tv_remove = view.findViewById(R.id.tv_remove);
        tv_number=view.findViewById(R.id.tv_number);
        tv_add=view.findViewById(R.id.tv_add);

        tv_remove.setOnClickListener(this);
        tv_add.setOnClickListener(this);

    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.tv_remove:
                if(number>1){
                    --number;
                    //把结果回调出去
                    tv_number.setText(number+"");
                    if(onNumberChangeListener!=null){
                        onNumberChangeListener.getonNumberChange(number);
                    }
                }

                break;

            case R.id.tv_add:
                ++number;
                   tv_number.setText(number+"");
                if(onNumberChangeListener!=null){
                    onNumberChangeListener.getonNumberChange(number);
                }

                break;
        }
    }

    //当展示购物车的时候,展示几件商品,展示出来
    public int getNumber() {
        return number;
    }


    public void setNumber(int number) {
        this.number = number;
        tv_number.setText(number+"");
    }




    onNumberChangeListener onNumberChangeListener;

    public void setOnNumberChangeListener(MyAddSubView.onNumberChangeListener onNumberChangeListener) {
        this.onNumberChangeListener = onNumberChangeListener;
    }

    //定义回调接口
    public interface onNumberChangeListener{
        void getonNumberChange(int num);
    }

}

二,ShopModel

public class ShopCartModel {
    //查询购物车
    public Observable<ShopCartBean> shopcart(int uid){
        return RetrofitManager.getDefault().creat(ShopCartApi.class).shopcart(uid);
    }

    //删除购物车
    public Observable<DeleteBean> deleter(String uid,String pid){
        return RetrofitManager.getDefault().creat(ShopCartApi.class).deleter(uid,pid);
    }
}

三,ShopPresenter

public class ShopCartPresenter extends BasePresenter<ShopCartView> {

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值