您的位置:首页 > 理论基础 > 计算机网络

android_网络判断,Greendao,retrofit,eventbus结合展示数据

2017-12-03 20:59 393 查看
第一:导依赖顶部:apply plugin: 'org.greenrobot.greendao'
dependencies:
compile 'org.greenrobot:greendao:3.2.2'
//    compile 'com.github.bumptech.glide:glide:4.3.1'
//    annotationProcessor 'com.github.bumptech.glide:compiler:4.3.1'
compile 'com.jakewharton:butterknife:8.8.1'
compile 'com.facebook.fresco:fresco:0.13.0'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
compile 'com.android.support:recyclerview-v7:26.0.0-alpha1'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'
compile 'org.greenrobot:eventbus:3.1.1'
//repositories {
//    mavenCentral()
//    maven { url 'https://maven.google.com' }
//}
greendao{
schemaVersion 1
daoPackage 'com.bwei.www.renbaihui.gen'
targetGenDir 'src/main/java'
}
网络判断工具类:
public class WifiUtils {private static volatile WifiUtils instance;private Context context;private WifiUtils(Context context) {this.context = context;}public static WifiUtils getInstance(Context context) {if (instance == null) {synchronized (WifiUtils.class) {if (instance == null) {instance = new WifiUtils(context);}}}return instance;}public int getNetype() {int netType = -1;ConnectivityManager connMgr = (ConnectivityManager) context.getSystemService(Context.CONNECTIVITY_SERVICE);NetworkInfo networkInfo = connMgr.getActiveNetworkInfo();//无网络if (networkInfo == null) {return netType;}int nType = networkInfo.getType();//手机网络if (nType == ConnectivityManager.TYPE_MOBILE) {netType = 2;} else if (nType == ConnectivityManager.TYPE_WIFI) {//wifi网络netType = 1;}//返回return netType;}}
数据库工具类
public class DbUtils {private static volatile DbUtils instance;private final CateGoryDao dao;private DbUtils(Context context) {//创建数据库DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(context, "category.db", null);SQLiteDatabase database = helper.getWritableDatabase();DaoMaster daoMaster = new DaoMaster(database);DaoSession daoSession = daoMaster.newSession();dao = daoSession.getCateGoryDao();}public static DbUtils getInstance(Context context){if (instance == null) {synchronized (DbUtils.class) {if (null == instance) {instance = new DbUtils(context);}}}return instance;}public CateGoryDao getDao(){return dao;}}
retrofit工具类:
public class RetrofitUtils {private static volatile RetrofitUtils instance;private final Retrofit retrofit;private RetrofitUtils(String baseurl) {//协议加域名//自动解析gson数据retrofit = new Retrofit.Builder().baseUrl(baseurl)//协议加域名.addConverterFactory(GsonConverterFactory.create())//自动解析gson数据.build();}public static RetrofitUtils getInstance(String baseurl) {if (instance == null) {synchronized (RetrofitUtils.class) {if (instance == null) {instance = new RetrofitUtils(baseurl);}}}return instance;}public Retrofit getretrofit(){return retrofit;}}
EventBusMessage: 容器
public class EventBusMessage {private String msg;public EventBusMessage(String msg) {this.msg = msg;}public String getMsg(){return msg;}@Overridepublic String toString() {return "EventBusMessage{" +"msg='" + msg + '\'' +'}';}}
接口:
public interface Retro {@GET("data/Android/{id1}/{id2}")Call<MessageBean<List<Load>>> get(@Path("id1") int id1, @Path("id2") int id2);}
CateGory:
@Entitypublic class CateGory {@Idprivate Long id;private String title;private String time;@Generated(hash = 751089394)public CateGory(Long id, String title, String time) {this.id = id;this.title = title;this.time = time;}@Generated(hash = 240826954)public CateGory() {}public Long getId() {return this.id;}public void setId(Long id) {this.id = id;}public String getTitle() {return this.title;}public void setTitle(String title) {this.title = title;}public String getTime() {return this.time;}public void setTime(String time) {this.time = time;}}
适配器:
public class RAdapter extends RecyclerView.Adapter<RAdapter.ViewHolder> {Context context;List<CateGory> list;public RAdapter(Context context, List<CateGory> list) {this.context = context;this.list = list;}@Overridepublic ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {View view = View.inflate(context, R.layout.rv_item, null);ViewHolder holder = new ViewHolder(view);return holder;}@Overridepublic void onBindViewHolder(ViewHolder holder, int position) {//        Uri uri = Uri.parse("res://com.bwei.www.renbaihui.adapter/"+R.mipmap.ic_launcher_round);//        holder.img.setImageURI(uri);holder.tv_tit.setText(list.get(position).getTitle());holder.tv_tim.setText(list.get(position).getTime());}@Overridepublic int getItemCount() {return list.size();}class ViewHolder extends RecyclerView.ViewHolder {// private final SimpleDraweeView img;private final TextView tv_tit;private final TextView tv_tim;public ViewHolder(View itemView) {super(itemView);//img = (SimpleDraweeView)itemView.findViewById(R.id.img);tv_tit = itemView.findViewById(R.id.tv_tit);tv_tim = itemView.findViewById(R.id.tv_tim);}}}
MainActivity:
public class MainActivity extends AppCompatActivity {@butterknife.BindView(R.id.rv)RecyclerView rv;private CateGoryDao dao;List<CateGory> list = new ArrayList<>();private RAdapter adapter;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);//注册EventBus.getDefault().register(this);butterknife.ButterKnife.bind(this);dao = DbUtils.getInstance(this).getDao();List<CateGory> db = getDb();for (int i = 0; i < db.size(); i++) {Log.e("-----",db.get(i).getTime());}//创建适配器adapter = new RAdapter(MainActivity.this, db);if (db.size()==0){getNetData();}//条目添加线rv.addItemDecoration(new DividerItemDecoration(MainActivity.this, LinearLayoutManager.VERTICAL));LinearLayoutManager manager = new LinearLayoutManager(MainActivity.this, LinearLayoutManager.VERTICAL, false);rv.setLayoutManager(manager);rv.setAdapter(adapter);int netype = WifiUtils.getInstance(MainActivity.this).getNetype();if (netype == -1) {EventBus.getDefault().post(new EventBusMessage("当前无网络,将展示本地数据库数据"));//获取数据库数据getDb();} else if (netype == 1) {EventBus.getDefault().post(new EventBusMessage("当前wifi网络"));//从网络获取数据getNetData();} else {EventBus.getDefault().post(new EventBusMessage("当前手机网络"));//从网络获取数据getNetData();}}//public void getNetData(){final Retrofit getretrofit = RetrofitUtils.getInstance("http://gank.io/api/").getretrofit();Retro retro = getretrofit.create(Retro.class);Call<MessageBean<List<Load>>> call = retro.get(10, 1);call.enqueue(new Callback<MessageBean<List<Load>>>() {@Overridepublic void onResponse(Call<MessageBean<List<Load>>> call, Response<MessageBean<List<Load>>> response) {MessageBean<List<Load>> body = response.body();List<Load> results = body.getResults();for(int i=0;i<results.size();i++) {list.add(new CateGory(null,results.get(i).getDesc(),results.get(i).getCreatedAt()));dao.insertOrReplace(list.get(i));}adapter.notifyDataSetChanged();}@Overridepublic void onFailure(Call<MessageBean<List<Load>>> call, Throwable t) {}});}public List<CateGory> getDb() {List<CateGory> categories = dao.loadAll();//list.addAll(categories);return categories;}@Subscribe(threadMode = ThreadMode.MAIN)public void onMessageEvent(EventBusMessage event) {/* Do something */Log.e("-=-=-=-", "onMessageEvent: " + event.getMsg());Toast.makeText(MainActivity.this, event.getMsg(), Toast.LENGTH_SHORT).show();};@Overridepublic void onDestroy() {super.onDes90a2troy();EventBus.getDefault().unregister(this);}}

                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: