一 ·
public class MainActivity extends AppCompatActivity implements CollectionInterFace.MyViewInterFace{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate (savedInstanceState);
Fresco.initialize (this);
setContentView (R.layout.activity_main);
presenterInterFace = new Presenter (this);
ButterKnife.bind (this);
GridLayoutManager layoutManage = new GridLayoutManager (this, 2);
layoutManage.setOrientation (LinearLayoutManager.VERTICAL);
recycler.addItemDecoration (new DividerItemDecoration (MainActivity.this, DividerItemDecoration.VERTICAL));
recycler.addItemDecoration (new DividerItemDecoration (MainActivity.this, DividerItemDecoration.HORIZONTAL));
recycler.setLayoutManager (layoutManage);
if (isWifiConnected (this)) {
presenterInterFace.toPresenter (1);
presenterInterFace.onBanner ();
} else {
List dayStepDao = App.daoSession.loadAll (DayStep.class);
for (int i = 0; i < dayStepDao.size (); i++) {
Product.ResultBean resultBean = new Product.ResultBean ();
resultBean.setName (dayStepDao.get (i).getTitle ());
resultBean.setImageUrl (dayStepDao.get (i).getImgUrl ());
mlist.add (resultBean);
}
myAdapter = new MyAdapter (this, mlist);
recycler.setAdapter (myAdapter);
}
myAdapter = new MyAdapter (this, mlist);
recycler.setAdapter (myAdapter);
myAdapter.notifyDataSetChanged ();
}
@Override
public void toShou(Object o) {
Product product = (Product) o;
mlist.addAll (product.getResult ());
myAdapter.notifyDataSetChanged ();
}
@Override
public void toBan(Bann bann) {
banner.setImageLoader (new ImageLoader () {
@Override
public void displayImage(Context context, Object path, ImageView imageView) {
Glide.with (context).load (path).into (imageView);
}
});
for (Bann.ResultBean bean : bann.getResult ()) {
String image = bean.getImageUrl ();
list.add (image);
}
banner.setImages (list);
banner.start ();
}
//判断网络可用
public boolean isWifiConnected(Context context) {
if (context != null) {
ConnectivityManager connectivityManager = (ConnectivityManager) context.getSystemService (Context.CONNECTIVITY_SERVICE);
NetworkInfo mNetworInfo = connectivityManager.getNetworkInfo (ConnectivityManager.TYPE_WIFI);
if (mNetworInfo != null) {
return mNetworInfo.isAvailable ();
}
}
return false;
}
}
OkHttpUtile
public class OkHttpUtile {
OkHttpClient okHttpClient;
public static OkHttpUtile utile;
private OkHttpUtile(){
okHttpClient = new OkHttpClient.Builder ().addInterceptor (new Interceptor () {
@Override
public Response intercept(Chain chain) throws IOException {
Request request =chain.request ().newBuilder ()
.addHeader ("userId","11249")
.addHeader ("sessionId","13466907855")
.build ();
Log.e ("tag",request.toString ());
Response proceed = chain.proceed (request);
Log.e ("tag",proceed.toString ());
return proceed;
}
}).build ();
}
public static synchronized OkHttpUtile getInstance(){
if(utile == null){
utile = new OkHttpUtile ();
}
return utile;
}
public void doGet(String url,Callback callback){
Request request = new Request.Builder ()
.get ()
.url (url)
.build ();
Call call = okHttpClient.newCall (request);
call.enqueue (callback);
}
}
Model
public class MyModel {
MyCallBack callBack;
MyCallBack callBreakBanner;
@SuppressLint("HandlerLeak")
Handler mhandler = new Handler (){
@Override
public void handleMessage(Message msg) {
super.handleMessage (msg);
int type = msg.arg1;
String json = (String) msg.obj;
Gson gson = new Gson ();
if(type == 1) {
Product product = gson.fromJson (json, Product.class);
callBack.success (product);
}else{
Bann bann = gson.fromJson (json, Bann.class);
callBreakBanner.success (bann);
}
}
};
public void doRequest(final int rtype, String url, MyCallBack callBack){
if(rtype == 1){
this.callBack=callBack;
}else{
this.callBreakBanner = callBack;
}
OkHttpUtile utile = OkHttpUtile.getInstance ();
utile.doGet (url, new Callback () {
@Override
public void onFailure(Call call, IOException e) {
}
@Override
public void onResponse(Call call, Response response) throws IOException {
String string = response.body().string();
Message message=new Message();
message.obj=string;
message.arg1 = rtype;
mhandler.sendMessage(message);
}
});
}
public interface MyCallBack{
public void success(Object o);
}
}
Presenter
public class Presenter implements CollectionInterFace.PresenterInterFace {
T tt;
MyModel myModel;
CollectionInterFace.MyViewInterFace myViewInterFace;
public Presenter(T t){
this.tt = t;
myModel = new MyModel ();
}
@Override
public void toPresenter(int page) {
myModel.doRequest (1, "http://172.17.8.100/movieApi/movie/v1/findReleaseMovieList?page=1&count=20", new MyModel.MyCallBack () {
@Override
public void success(Object o) {
myViewInterFace = (CollectionInterFace.MyViewInterFace) tt;
myViewInterFace.toShou (o);
}
});
}
public void onBanner(){
String URL= "http://172.17.8.100/small/commodity/v1/bannerShow";
myModel.doRequest (2, URL, new MyModel.MyCallBack () {
@Override
public void success(Object o) {
myViewInterFace = (CollectionInterFace.MyViewInterFace) tt;
myViewInterFace.toBan ((Bann) o);
}
});
}
}
Collection
public interface CollectionInterFace {
public interface MyViewInterFace {
public void toShou(Object o);
public void toBan(Bann bann);
}
public interface PresenterInterFace{
public void toPresenter(int page);
public void onBanner();
}
}
App
public class App extends Application {
public static DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate ();
DaoMaster.DevOpenHelper devOpenHelper=new DaoMaster.DevOpenHelper(this,"mydb");
SQLiteDatabase sqLiteDatabase=devOpenHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(sqLiteDatabase);
daoSession=daoMaster.newSession();
//
DiskCacheConfig diskCacheConfig=DiskCacheConfig.newBuilder(this)
.setBaseDirectoryPath(this.getApplicationContext().getCacheDir())
.setBaseDirectoryName("com.bawei.huancun")
.setMaxCacheSizeOnLowDiskSpace(60* ByteConstants.MB)
.setMaxCacheSizeOnVeryLowDiskSpace(20*ByteConstants.MB)
.build();
ImagePipelineConfig build= ImagePipelineConfig.newBuilder(this)
.setMainDiskCacheConfig(diskCacheConfig)
.build();
Fresco.initialize(this,build);
}
}
Bean
@Entity
public class DayStep {
@Id
private long id;
private String imgUrl;
private String title;
@Generated(hash = 117380388)
public DayStep(long id, String imgUrl, String title) {
this.id = id;
this.imgUrl = imgUrl;
this.title = title;
}
@Generated(hash = 121003456)
public DayStep() {
}
public long getId() {
return this.id;
}
public void setId(long id) {
this.id = id;
}
public String getImgUrl() {
return this.imgUrl;
}
public void setImgUrl(String imgUrl) {
this.imgUrl = imgUrl;
}
public String getTitle() {
return this.title;
}
public void setTitle(String title) {
this.title = title;
}
}
MyAdapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.Holde> {
Context context;
List<Product.ResultBean> list;
DayStepDao dayStepDao;
public MyAdapter(Context context, List<Product.ResultBean> list) {
this.context = context;
this.list = list;
dayStepDao = App.daoSession.getDayStepDao ();
dayStepDao.deleteAll ();
}
@NonNull
@Override
public Holde onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = LayoutInflater.from (context).inflate (R.layout.item, null);
return new Holde (view);
}
@Override
public void onBindViewHolder(@NonNull Holde holde, int i) {
holde.text1.setText (list.get (i).getName ());
holde.simpledraweeview_id.setImageURI(list.get(i).getImageUrl());
DayStep dayStep = new DayStep ();
dayStep.setId (list.get (i).getId ());
dayStep.setImgUrl (list.get (i).getImageUrl ());
dayStep.setTitle (list.get (i).getName ());
dayStepDao = App.daoSession.getDayStepDao ();
dayStepDao.insert (dayStep);
}
@Override
public int getItemCount() {
return list.size ();
}
public class Holde extends RecyclerView.ViewHolder {
TextView text1,pic;
SimpleDraweeView simpledraweeview_id;
public Holde(@NonNull View itemView) {
super (itemView);
text1 = itemView.findViewById (R.id.text1);
simpledraweeview_id = itemView.findViewById (R.id.simpledraweeview_id);
pic = itemView.findViewById (R.id.pic);
}
}
}