public class DBUtils { private static volatile DBUtils instance; private final BeanDao dao; //gen中的...Dao类 private DBUtils(Context context) { DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "poss", null); SQLiteDatabase database = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(database); DaoSession daoSession = daoMaster.newSession(); dao = daoSession.getBeanDao(); //gen中的...Dao类的方法 } public static DBUtils getInstance(Context context){ if (instance == null) { synchronized (DBUtils.class) { if (null == instance) { instance = new DBUtils(context); } } } return instance; } public BeanDao getDao(){ return dao; //返回 } }
public interface ApiService { @GET("api/data/Android/{page}/{num}") //有些路径和参数放这 Call<Bean1<List<Bean2>>> get(@Path("page") int page, @Path("num") int num); }
//M层 public class RetorfidUtils { private Retrofit retrofit; private static volatile RetorfidUtils retrofitutils; private RetorfidUtils(String baseurl){ retrofit = new Retrofit.Builder() .addConverterFactory(GsonConverterFactory.create()) .baseUrl(baseurl) .build(); } public static RetorfidUtils getInstence(String url){ if(null==retrofitutils){ synchronized (RetorfidUtils.class){ if(retrofitutils==null){ retrofitutils = new RetorfidUtils(url); } } } return retrofitutils; } public void get(final Mview mview,int page,int num){ ApiService aClass = retrofit.create(ApiService.class); Call<Bean1<List<Bean2>>> call = aClass.get(page, num); call.enqueue(new Callback<Bean1<List<Bean2>>>() { @Override public void onResponse(Call<Bean1<List<Bean2>>> call, Response<Bean1<List<Bean2>>> response) { Bean1<List<Bean2>> body = response.body(); Log.e("adfsatstg",body.toString()); mview.Success(body); } @Override public void onFailure(Call<Bean1<List<Bean2>>> call, Throwable t) { mview.Failed(t); } }); } }
//P层 public class Presenter { private IView iView; public void AtthView(IView iView){ this.iView = iView; } public void get(String url,int page,int num){ RetorfidUtils.getInstence(url).get(new Mview() { @Override public void Success(Object o) { iView.onSueecss(o); Log.e("13841351865468",o.toString()); } @Override public void Failed(Throwable t) { iView.onFailed(t); } },page,num); } }
public class Fragment01 extends Fragment implements IView{ private List<Bean> list; @BindView(R.id.recyc) RecyclerView recyc; private RAdapter adapter; private BeanDao dao; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = View.inflate(getActivity(), R.layout.fragment01, null); ButterKnife.bind(this, view); return view; } @Override public void onActivityCreated(@Nullable Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); list = new ArrayList<Bean>(); LinearLayoutManager manager=new LinearLayoutManager(getActivity()); recyc.setLayoutManager(manager); adapter = new RAdapter(getActivity(),list); recyc.setAdapter(adapter); dao = DBUtils.getInstance(getActivity()).getDao(); //判断有没有数据 put(); } @Override public void onSueecss(Object o) { Bean1<List<Bean2>> personBean=(Bean1<List<Bean2>>) o; List<Bean2> results = personBean.getResults(); //循环添加到数据库 for (int i=0;i<results.size();i++){ Bean bean = new Bean(); bean.setName(results.get(i).getDesc()); List<String> images = results.get(i).getImages(); if(images==null||images.size()==0){ }else { bean.setImg(images.get(0)); } dao.insertOrReplace(bean); } put(); } @Override public void onFailed(Throwable t) { } public void put(){ List<Bean> been = dao.loadAll(); if(been==null||been.size()==0){ Presenter presenter=new Presenter(); presenter.AtthView(this); presenter.get("http://gank.io/",10,1); }else { list.clear(); list.addAll(been); adapter.notifyDataSetChanged(); } } }