请求网络工具类
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);
}
}
}