使用Greendao点击第二个fragment数据后将数据添加到第二个fragment

请求网络工具类

package bwie.com.zk02.net;

import java.util.concurrent.TimeUnit;

import bwie.com.zk02.model.Api;
import okhttp3.OkHttpClient;
import retrofit2.Retrofit;
import retrofit2.adapter.rxjava2.RxJava2CallAdapterFactory;
import retrofit2.converter.gson.GsonConverterFactory;

import static bwie.com.zk02.net.OkHttpMannager.http.OK_HTTP_MANNAGER;

public class OkHttpMannager {

    private OkHttpClient builder;
    private Retrofit retrofit;
    public Api api;

    private OkHttpMannager(){
        builder = new OkHttpClient.Builder()
                 .connectTimeout(10,TimeUnit.SECONDS)
                 .readTimeout(10,TimeUnit.SECONDS)
                 .writeTimeout(10,TimeUnit.SECONDS)
                 .addInterceptor(new HeadInterceptor())
                .build();
        retrofit = new Retrofit.Builder()
                .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
                .addConverterFactory(GsonConverterFactory.create())
                .baseUrl("http://172.17.8.100/small/")
                .client(builder)
                .build();
        api = retrofit.create(Api.class);
    }

    //单例
    public static OkHttpMannager getInstance() {
        return http.OK_HTTP_MANNAGER;
    }
    public static class http{
        public static final OkHttpMannager OK_HTTP_MANNAGER  = new OkHttpMannager();
    }

}

Api

package bwie.com.zk02.model;

import bwie.com.zk02.entity.BannerEntity;
import bwie.com.zk02.entity.GreenEntity;
import bwie.com.zk02.entity.HomeEntity;
import io.reactivex.Observable;
import retrofit2.http.GET;

public interface Api {
    @GET("commodity/v1/commodityList")
    Observable<HomeEntity> getHome();
    //banner
    @GET("commodity/v1/bannerShow")
    Observable<BannerEntity> getBanner();
}

basepresenter

package bwie.com.zk02.base;

public class BasePresenter<V>  {
    private V view;

    public V getView() {
        return view;
    }

    public void setView(V view) {
        this.view = view;
    }
    public void dettch(){
        if (view!=null){
            view=null;
        }
    }
}

baseiview

package bwie.com.zk02.base;

public interface BaseIView<T> {
    void Success(T t,int isWhat);
    void False(String mess);
}

baseactivity

package bwie.com.zk02.base;

import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public abstract class BaseActivity extends AppCompatActivity {
    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(bindLayout());

        initView();
        initData();
        bindEvent();
    }

    protected abstract void bindEvent();

    protected abstract void initData();

    protected abstract void initView();

    protected abstract int bindLayout();

}

basefragmen

package bwie.com.zk02.base;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public abstract class BaseFragment extends Fragment {

    protected View view;

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

    @Override
    public void onActivityCreated(@Nullable Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        initView();
        initData();
        bindEvent();
    }

    protected abstract void bindEvent();

    protected abstract void initData();

    protected abstract void initView();

    protected abstract int bindLayout();
}

presenter层 

package bwie.com.zk02.presenter;

import bwie.com.zk02.base.BaseIView;
import bwie.com.zk02.base.BasePresenter;
import bwie.com.zk02.entity.BannerEntity;
import bwie.com.zk02.entity.GreenEntity;
import bwie.com.zk02.entity.HomeEntity;
import bwie.com.zk02.net.OkHttpMannager;
import io.reactivex.android.schedulers.AndroidSchedulers;
import io.reactivex.functions.Consumer;
import io.reactivex.schedulers.Schedulers;

public class Presenter extends BasePresenter<BaseIView> {
    private OkHttpMannager instance;
    public Presenter(){
        instance = OkHttpMannager.getInstance();
    }

    public void getHome() {
        instance.api.getHome()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Consumer<HomeEntity>() {
                    @Override
                    public void accept(HomeEntity homeEntity) throws Exception {
                        getView().Success(homeEntity,1);
                    }
                });
    }
    public void getBanner() {
        instance.api.getBanner()
                .observeOn(AndroidSchedulers.mainThread())
                .subscribeOn(Schedulers.io())
                .subscribe(new Consumer<BannerEntity>() {
                    @Override
                    public void accept(BannerEntity bannerEntity) throws Exception {
                        getView().Success(bannerEntity,2);
                    }
                });
    }
}

mainactivity里面创建fragment

package bwie.com.zk02.activity;

import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v4.view.ViewPager;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.RadioButton;

import com.hjm.bottomtabbar.BottomTabBar;

import bwie.com.zk02.R;
import bwie.com.zk02.base.BaseActivity;
import bwie.com.zk02.fragment.FootprintFragment;
import bwie.com.zk02.fragment.HomeFragment;

public class MainActivity extends AppCompatActivity  {
    private BottomTabBar fragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        fragment = findViewById(R.id.fragment);
        fragment.init(getSupportFragmentManager())
                .setFontSize(0)
                .setImgSize(50,50)
                .addTabItem("首页",R.drawable.yi,HomeFragment.class)
                .addTabItem("圈子",R.drawable.er,FootprintFragment.class)
                .isShowDivider(false);


    }
}

首页fragment 

package bwie.com.zk02.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

import bwie.com.zk02.R;
import bwie.com.zk02.adapter.HomeAdapter;
import bwie.com.zk02.base.BaseFragment;
import bwie.com.zk02.base.BaseIView;
import bwie.com.zk02.entity.BannerEntity;
import bwie.com.zk02.entity.HomeEntity;
import bwie.com.zk02.presenter.Presenter;

public class HomeFragment extends BaseFragment implements BaseIView {

    private RecyclerView recycle;
    private Presenter presenter;
    private List<BannerEntity.ResultBean> bannerEntityResult;

    @Override
    protected void bindEvent() {

    }

    @Override
    protected void initData() {
        recycle.setLayoutManager(new LinearLayoutManager(getActivity()));
        presenter = new Presenter();
        presenter.setView(this);
        presenter.getHome();
        presenter.getBanner();

    }
    @Override
    protected void initView() {
        recycle = view.findViewById(R.id.recycle);
    }

    @Override
    protected int bindLayout() {
        return R.layout.home_layout;
    }

    @Override
    public void Success(Object o, int isWhat) {
        if (isWhat==1){
            HomeEntity homeEntity = (HomeEntity) o;
            HomeEntity.ResultBean result = homeEntity.getResult();
            HomeAdapter homeAdapter = new HomeAdapter(getActivity(),result,bannerEntityResult);
            recycle.setAdapter(homeAdapter);
        }
        if (isWhat==2){
            BannerEntity bannerEntity = (BannerEntity) o;
            bannerEntityResult = bannerEntity.getResult();

        }
    }

    @Override
    public void False(String mess) {

    }
}

首页adapter

package bwie.com.zk02.adapter;

import android.content.Context;
import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import com.bumptech.glide.Glide;
import com.stx.xhb.xbanner.XBanner;

import java.util.ArrayList;
import java.util.List;

import bwie.com.zk02.App;
import bwie.com.zk02.R;
import bwie.com.zk02.db.DaoSession;
import bwie.com.zk02.entity.BannerEntity;
import bwie.com.zk02.entity.GreenEntity;
import bwie.com.zk02.entity.HomeEntity;
import bwie.com.zk02.fragment.FootprintFragment;

public class HomeAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    Context context;
    HomeEntity.ResultBean list;
    private int BANNER_TYPE=0;
    private int RXXP_TYPE=1;
    private int PZSH_TYPE=2;
    private int MLSS_TYPE=3;
    private BannerHolder bannerHolder;
    private RxxpHolder rxxpHolder;
    private PzshHolder pzshHolder;
    private MlssHolder mlssHolder;
    private FootprintFragment footprintFragment;
    List<BannerEntity.ResultBean> bannerEntityResult;

    public HomeAdapter(Context context, HomeEntity.ResultBean list, List<BannerEntity.ResultBean> bannerEntityResult) {
        this.context = context;
        this.list = list;
        this.bannerEntityResult = bannerEntityResult;
    }
    @NonNull
    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        if (i==BANNER_TYPE){
            View view = LayoutInflater.from(context).inflate(R.layout.home_banner, viewGroup, false);
            bannerHolder = new BannerHolder(view);
            return bannerHolder;
        }else if (i==RXXP_TYPE){
            View view = LayoutInflater.from(context).inflate(R.layout.home_rxxp_recycle, viewGroup, false);
            rxxpHolder = new RxxpHolder(view);
            return rxxpHolder;
        }
        else if (i==PZSH_TYPE){
            View view = LayoutInflater.from(context).inflate(R.layout.home_pzsh_recycle, viewGroup, false);
            pzshHolder = new PzshHolder(view);
            return pzshHolder;
        }
        else if (i==MLSS_TYPE){
            View view = LayoutInflater.from(context).inflate(R.layout.home_mlss_recycle, viewGroup, false);
            mlssHolder = new MlssHolder(view);
            return mlssHolder;
        }
        return null;
    }

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder viewHolder, final int i) {
       final DaoSession daoSession = App.daoSession;
        if (viewHolder instanceof BannerHolder){
            bannerHolder = (BannerHolder) viewHolder;
            List<String> list = new ArrayList<>();
            for (int j = 0; j < bannerEntityResult.size(); j++) {
                list.add(bannerEntityResult.get(i).getImageUrl());
            }
            bannerHolder.xbanner.setData(list,null);
            bannerHolder.xbanner.setmAdapter(new XBanner.XBannerAdapter() {
                @Override
                public void loadBanner(XBanner banner, View view, int position) {
                    Glide.with(context).load(bannerEntityResult.get(position).getImageUrl()).into((ImageView) view);
                }
            });
        }
        else if (viewHolder instanceof RxxpHolder){
            rxxpHolder = (RxxpHolder) viewHolder;
            rxxpHolder.text_rxxp.setText(list.getRxxp().getName());
            LinearLayoutManager linearLayoutManager = new LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false);
            rxxpHolder.recycle_rxxp.setLayoutManager(linearLayoutManager);
            RxxpAdapter rxxpAdapter = new RxxpAdapter(context,list);
            rxxpHolder.recycle_rxxp.setAdapter(rxxpAdapter);
            //加入数据库
            rxxpAdapter.setOnClicks(new MlssAdapter.OnClicks() {
                @Override
                public void OnCallback(int sss) {
                    Toast.makeText(context,"加入成功",Toast.LENGTH_SHORT).show();
                    GreenEntity greenEntity = new GreenEntity();
                    greenEntity.setCommodityName(list.getRxxp().getCommodityList().get(sss).getCommodityName());
                    greenEntity.setMasterPic(list.getRxxp().getCommodityList().get(sss).getMasterPic());
                    greenEntity.setPrice(list.getRxxp().getCommodityList().get(sss).getPrice()+"");
                    daoSession.insert(greenEntity);
                }
            });

        }
        else if (viewHolder instanceof PzshHolder){
            pzshHolder = (PzshHolder) viewHolder;
            pzshHolder.text_pzsh.setText(list.getPzsh().getName());
            GridLayoutManager gridLayoutManager = new GridLayoutManager(context, 2);
            pzshHolder.recycle_pzsh.setLayoutManager(gridLayoutManager);
            PzshAdapter pzshAdapter = new PzshAdapter(context,list);
            pzshHolder.recycle_pzsh.setAdapter(pzshAdapter);
            pzshAdapter.setOnClicks(new MlssAdapter.OnClicks() {
                @Override
                public void OnCallback(int sss) {
                    Toast.makeText(context,"加入成功",Toast.LENGTH_SHORT).show();
                    GreenEntity greenEntity = new GreenEntity();
                    greenEntity.setCommodityName(list.getPzsh().getCommodityList().get(sss).getCommodityName());
                    greenEntity.setMasterPic(list.getPzsh().getCommodityList().get(sss).getMasterPic());
                    greenEntity.setPrice(list.getPzsh().getCommodityList().get(sss).getPrice()+"");
                    daoSession.insert(greenEntity);
                }
            });

        }
        else if (viewHolder instanceof MlssHolder){
            mlssHolder = (MlssHolder) viewHolder;
            mlssHolder.text_mlss.setText(list.getMlss().getName());
            LinearLayoutManager  linearLayoutManager = new LinearLayoutManager(context);
            mlssHolder.recycle_mlss.setLayoutManager(linearLayoutManager);
            MlssAdapter mlssAdapter = new MlssAdapter(context,list);
            mlssHolder.recycle_mlss.setAdapter(mlssAdapter);
            mlssAdapter.setOnClicks(new MlssAdapter.OnClicks() {
                @Override
                public void OnCallback(int sss) {
                    Toast.makeText(context,"加入成功",Toast.LENGTH_SHORT).show();
                    GreenEntity greenEntity = new GreenEntity();
                    greenEntity.setCommodityName(list.getMlss().getCommodityList().get(sss).getCommodityName());
                    greenEntity.setMasterPic(list.getMlss().getCommodityList().get(sss).getMasterPic());
                    greenEntity.setPrice(list.getMlss().getCommodityList().get(sss).getPrice()+"");
                    daoSession.insert(greenEntity);
                }
            });
        }
    }

    @Override
    public int getItemViewType(int position) {
        if (position==0){
            return BANNER_TYPE;
        }else if (position==1){
            return RXXP_TYPE;
        }else if (position==2){
            return PZSH_TYPE;
        }else if (position==3){
            return MLSS_TYPE;
        }
        return super.getItemViewType(position);
    }

    @Override
    public int getItemCount() {
        return 4;
    }
    private class BannerHolder extends RecyclerView.ViewHolder{

        private XBanner xbanner;

        public BannerHolder(@NonNull View itemView) {
            super(itemView);
            xbanner = itemView.findViewById(R.id.xbanner);
        }
    }
    private class RxxpHolder extends RecyclerView.ViewHolder{

        private TextView text_rxxp;
        private RecyclerView recycle_rxxp;
        public RxxpHolder(@NonNull View itemView) {
            super(itemView);
            text_rxxp = itemView.findViewById(R.id.text_rxxp);
            recycle_rxxp = itemView.findViewById(R.id.rxxp_recycle);
        }
    }
    private class PzshHolder extends RecyclerView.ViewHolder{
        private TextView text_pzsh;
        private RecyclerView recycle_pzsh;
        public PzshHolder(@NonNull View itemView) {
            super(itemView);
            recycle_pzsh = itemView.findViewById(R.id.pzsh_recycle);
            text_pzsh = itemView.findViewById(R.id.text_pzsh);
        }
    }
    private class MlssHolder extends RecyclerView.ViewHolder{
        private TextView text_mlss;
        private RecyclerView recycle_mlss;
        public MlssHolder(@NonNull View itemView) {
            super(itemView);
            recycle_mlss = itemView.findViewById(R.id.mlss_recycle);
            text_mlss = itemView.findViewById(R.id.text_mlss);
        }
    }
}

再创3个要展示数据adapter(列出一个)

package bwie.com.zk02.adapter;

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

import com.facebook.drawee.view.SimpleDraweeView;
import bwie.com.zk02.R;
import bwie.com.zk02.entity.HomeEntity;

public class RxxpAdapter extends RecyclerView.Adapter<RxxpAdapter.ViewHolder> {
    Context context;
    HomeEntity.ResultBean list;

    public RxxpAdapter(Context context, HomeEntity.ResultBean list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = View.inflate(viewGroup.getContext(), R.layout.home_rxxp, null);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull final ViewHolder viewHolder, int i) {
        viewHolder.name.setText(list.getRxxp().getCommodityList().get(i).getCommodityName());
        viewHolder.price.setText(list.getRxxp().getCommodityList().get(i).getPrice()+"");
        viewHolder.img.setImageURI(list.getRxxp().getCommodityList().get(i).getMasterPic());
        viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                int position = viewHolder.getAdapterPosition();
                if (onClicks!=null){
                    onClicks.OnCallback(position);
                }
            }
        });
    }

    @Override
    public int getItemCount() {
        return list.getRxxp().getCommodityList().size();
    }

    public class ViewHolder extends RecyclerView.ViewHolder {

        private SimpleDraweeView img;
        private TextView price;
        private TextView name;

        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.rxxp_img);
            name = itemView.findViewById(R.id.rxxp_name);
            price = itemView.findViewById(R.id.rxxp_price);
        }
    }
    public interface OnClicks{
        void OnCallback(int sss);
    }
    MlssAdapter.OnClicks onClicks;

    public void setOnClicks(MlssAdapter.OnClicks onClicks) {
        this.onClicks = onClicks;
    }
}

生成greendao,初始化

package bwie.com.zk02;

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

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

import org.greenrobot.greendao.AbstractDaoMaster;

import bwie.com.zk02.db.DaoMaster;
import bwie.com.zk02.db.DaoSession;

public class App extends Application {

    public static DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);
        initdao();

    }

    private void initdao() {

        DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "aserbao.db");
        SQLiteDatabase db = helper.getWritableDatabase();
        DaoMaster daoMaster = new DaoMaster(db);
        daoSession = daoMaster.newSession();
    }

}

在第二个fragment使用

package bwie.com.zk02.fragment;

import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.Fragment;
import android.support.v7.widget.GridLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import java.util.List;

import bwie.com.zk02.App;
import bwie.com.zk02.R;
import bwie.com.zk02.adapter.FootprintAdapter;
import bwie.com.zk02.base.BaseFragment;
import bwie.com.zk02.base.BaseIView;
import bwie.com.zk02.db.DaoSession;
import bwie.com.zk02.db.GreenEntityDao;
import bwie.com.zk02.entity.GreenEntity;
import bwie.com.zk02.presenter.Presenter;

public class FootprintFragment extends BaseFragment{

    private RecyclerView recycles;
    private FootprintAdapter footprintAdapter;


    @Override
    protected void bindEvent() {

    }

    @Override
    protected void initData() {
        recycles.setLayoutManager(new GridLayoutManager(getActivity(), 2));
        DaoSession daoSession = App.daoSession;
        GreenEntityDao greenEntityDao = daoSession.getGreenEntityDao();
        List<GreenEntity> greenEntities = greenEntityDao.loadAll();
        if (!greenEntities.isEmpty()){
            footprintAdapter = new FootprintAdapter(getActivity(),greenEntities);
            recycles.setAdapter(footprintAdapter);
            footprintAdapter.notifyDataSetChanged();
        }

    }

    @Override
    protected void initView() {
        recycles = view.findViewById(R.id.recycles);
    }

    @Override
    protected int bindLayout() {
        return R.layout.footprint_layout;
    }
}

 第二个fragment的adapter

package bwie.com.zk02.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.ImageView;
import android.widget.TextView;

import com.facebook.drawee.view.SimpleDraweeView;

import java.util.List;

import bwie.com.zk02.R;
import bwie.com.zk02.entity.GreenEntity;

public class FootprintAdapter extends RecyclerView.Adapter<FootprintAdapter.ViewHolder> {
    Context context;
    List<GreenEntity> list;

    public FootprintAdapter(Context context, List<GreenEntity> list) {
        this.context = context;
        this.list = list;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View view = LayoutInflater.from(context).inflate(R.layout.footprint_item, viewGroup, false);
        ViewHolder ViewHolder = new ViewHolder(view);
        return ViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull ViewHolder viewHolder, int i) {
        viewHolder.name.setText(list.get(i).getCommodityName());
        viewHolder.price.setText(list.get(i).getPrice()+"");
        viewHolder.img.setImageURI(list.get(i).getMasterPic());

    }

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

    public class ViewHolder extends RecyclerView.ViewHolder {
        private final SimpleDraweeView img;
        private final TextView name;
        private final TextView price;
        public ViewHolder(@NonNull View itemView) {
            super(itemView);
            img = itemView.findViewById(R.id.img);
            name = itemView.findViewById(R.id.name);
            price = itemView.findViewById(R.id.price);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_43916826/article/details/89438074
今日推荐