fresco加载图片+EventBus Activity之间跳转传值+GreenDAo数据库+retrofit请求数据+recyclerview展示数据+ButterKnife找控件
2017-12-01 20:29
856 查看
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
compile 'org.greenrobot:greendao:3.2.2' compile 'com.squareup.retrofit2:retrofit:2.3.0' compile 'com.squareup.retrofit2:converter-gson:2.3.0' compile 'com.facebook.fresco:fresco:1.5.0' compile 'com.jakewharton:butterknife:8.8.1' annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1' compile 'org.greenrobot:eventbus:3.0.0' compile 'com.android.support:recyclerview-v7:26.1.0'
<uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
greendao { schemaVersion 1 daoPackage 'com.afa.tourism.greendao.gen' targetGenDir 'src/main/java' }build.gradel添加头部:
apply plugin: 'org.greenrobot.greendao' 添加到依赖上面
greendao { schemaVersion 1 daoPackage 'com.afa.tourism.greendao.gen' targetGenDir 'src/main/java' }activity_main布局
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.example.administrator.myapplication.MainActivity"> <android.support.v7.widget.RecyclerView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/recyclerview"></android.support.v7.widget.RecyclerView> </RelativeLayout>IApplication类配置
package com.example.administrator.myapplication; import android.app.Application; import com.afa.tourism.greendao.gen.DaoMaster; import com.afa.tourism.greendao.gen.DaoSession; import com.facebook.drawee.backends.pipeline.Fresco; import org.greenrobot.greendao.database.Database; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; /** * Created by Administrator on 2017/12/1. */ //http://api.tianapi.com/wxnew/?key=18e883dd6b316eb1d97fd86338abbf06&num=10 public class IApplication extends Application{ public static IGetDataBase iGetDataBase; public static DaoSession session; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); Retrofit retrofit= new Retrofit.Builder() .baseUrl("http://api.tianapi.com") .addConverterFactory(GsonConverterFactory.create()) .build(); iGetDataBase = retrofit.create(IGetDataBase.class); DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "test"); Database database = helper.getWritableDb(); session = new DaoMaster(database).newSession(); } }IGetDataBase接口
package com.example.administrator.myapplication; import com.example.administrator.myapplication.bean.Bean; import retrofit2.Call; import retrofit2.http.Field; import 4000 retrofit2.http.GET; import retrofit2.http.POST; import retrofit2.http.Query; /** * Created by Administrator on 2017/12/1. */ //http://api.tianapi.com/wxnew/?key=18e883dd6b316eb1d97fd86338abbf06&num=10 public interface IGetDataBase { @GET("/wxnew/") Call<Bean> get(@Query("key") String key,@Query("num") int num); /*@POST("/wxnew/") Call<Bean> post(@Field("key") String key, int num);*/ }Model层MainCallBack接口
package com.example.administrator.myapplication.model; import com.example.administrator.myapplication.bean.Bean; /** * Created by Administrator on 2017/12/1. */ public interface MainCallBack { public void success(Bean bean); public void fail(Exception e); }MyModel类
package com.example.administrator.myapplication.model; import com.example.administrator.myapplication.IApplication; import com.example.administrator.myapplication.bean.Bean; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; /** * Created by Administrator on 2017/12/1. */ //http://api.tianapi.com/wxnew/?key=18e883dd6b316eb1d97fd86338abbf06&num=10 public class MainModel { public void getData(final MainCallBack callBack){ Call<Bean> call= IApplication.iGetDataBase.get("18e883dd6b316eb1d97fd86338abbf06",10); call.enqueue(new Callback<Bean>() { @Override public void onResponse(Call<Bean> call, Response<Bean> response) { Bean bean = response.body(); callBack.success(bean); IApplication.session.getNewslistBeanDao().insertInTx(bean.getNewslist()); } @Override public void onFailure(Call<Bean> call, Throwable t) { callBack.fail(new Exception("")); } }); } }View层IMainInterface接口
package com.example.administrator.myapplication.view; import com.example.administrator.myapplication.bean.Bean; /** * Created by Administrator on 2017/12/1. */ public interface IMaininterface { public void success(Bean bean); public void fail(Exception e); }PresentercengMyPresenter类
package com.example.administrator.myapplication.presenter; import com.example.administrator.myapplication.bean.Bean; import com.example.administrator.myapplication.model.MainCallBack; import com.example.administrator.myapplication.model.MainModel; import com.example.administrator.myapplication.view.IMaininterface; /** * Created by Administrator on 2017/12/1. */ public class MainPresenter { private IMaininterface iMaininterface; private MainModel mainModel; public MainPresenter(IMaininterface iMaininterface){ this.iMaininterface=iMaininterface; this.mainModel=new MainModel(); } public void get(){ mainModel.getData(new MainCallBack() { @Override public void success(Bean bean) { if(iMaininterface!=null){ iMaininterface.success(bean); } } @Override public void fail(Exception e) { if(iMaininterface!=null){ iMaininterface.fail(e); } } }); } }MainActivity
package com.example.administrator.myapplication; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import com.example.administrator.myapplication.bean.Bean; import com.example.administrator.myapplication.bean.NewslistBean; import com.example.administrator.myapplication.presenter.MainPresenter; import com.example.administrator.myapplication.view.IMaininterface; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; public class MainActivity extends AppCompatActivity implements IMaininterface{ @BindView(R.id.recyclerview) RecyclerView recyclerview; private MyAdapter adapter; private MainPresenter presenter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ButterKnife.bind(this); presenter = new MainPresenter(this); presenter.get(); LinearLayoutManager manager=new LinearLayoutManager(this,LinearLayoutManager.VERTICAL,false); recyclerview.setLayoutManager(manager); adapter = new MyAdapter(this); recyclerview.setAdapter(adapter); List<NewslistBean> newslistBeans = IApplication.session.getNewslistBeanDao().loadAll(); for (NewslistBean bean:newslistBeans){ Log.i("=========",bean.toString()); }
//判断网络 if(!isConn(getApplicationContext())){ ConnectionUtil.setNetworkMethod(MainActivity.this); }} @Override public void success(Bean bean) { adapter.add(bean); } @Override public void fail(Exception e) { }
//设置网络判断 public static boolean isConn(Context context){ boolean bisConnFlag=false; ConnectivityManager conManager = (ConnectivityManager)context.getSystemService(Context.CONNECTIVITY_SERVICE); NetworkInfo network = conManager.getActiveNetworkInfo(); if(network!=null){ bisConnFlag=conManager.getActiveNetworkInfo().isAvailable(); } return bisConnFlag; }}MyAdapter适配器
package com.example.administrator.myapplication; import android.content.Context; import android.content.Intent; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.example.administrator.myapplication.bean.Bean; import com.example.administrator.myapplication.bean.EventBean; import com.example.administrator.myapplication.bean.NewslistBean; import com.facebook.drawee.view.SimpleDraweeView; import org.greenrobot.eventbus.EventBus; import java.util.ArrayList; import java.util.List; import butterknife.BindView; import butterknife.ButterKnife; /** * Created by Administrator on 2017/12/1. */ class MyAdapter extends RecyclerView.Adapter<MyAdapter.IViewHolder> { Context context; List<NewslistBean> list; public MyAdapter(Context context) { this.context = context; } public void add(Bean bean) { if (list == null) { list = new ArrayList<>(); } list.addAll(bean.getNewslist()); notifyDataSetChanged(); } @Override public IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.adapter_item, null); return new IViewHolder(view); } @Override public void onBindViewHolder(IViewHolder holder, final int position) { holder.simpledraweeview.setImageURI(list.get(position).getPicUrl()); holder.title.setText(list.get(position).getTitle()); holder.title.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { EventBus.getDefault().postSticky(new EventBean(list.get(position).getPicUrl(),list.get(position).getTitle())); context.startActivity(new Intent(context,Main2Activity.class)); } }); } @Override public int getItemCount() { return list==null ? 0 : list.size(); } public class IViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.simpledraweeview) SimpleDraweeView simpledraweeview; @BindView(R.id.title) TextView title; public IViewHolder(View itemView) { super(itemView); ButterKnife.bind(this,itemView); } } }Main2Activity类
package com.example.administrator.myapplication; import android.app.Activity; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.widget.TextView; import android.widget.Toast; import com.example.administrator.myapplication.bean.EventBean; import com.facebook.drawee.view.SimpleDraweeView; import org.greenrobot.eventbus.EventBus; import org.greenrobot.eventbus.Subscribe; import butterknife.BindView; import butterknife.ButterKnife; public class Main2Activity extends Activity { @BindView(R.id.simpledraweeview1) SimpleDraweeView simpledraweeview1; @BindView(R.id.title1) TextView title1; private String url; private String title; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); ButterKnife.bind(this); EventBus.getDefault().register(this); title1.setText(title); simpledraweeview1.setImageURI(url); } @Subscribe(sticky = true) public void event(EventBean eventBean){ url = eventBean.getUrl(); title = eventBean.getTitle(); Toast.makeText(this, " "+eventBean.getUrl()+" "+eventBean.getTitle(), Toast.LENGTH_SHORT).show(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } }ConnectionUtil工具类判断网络
package com.example.administrator.monilianxi;import android.app.AlertDialog;import android.content.ComponentName;import android.content.Context;import android.content.DialogInterface;import android.content.Intent;/*** Created by Administrator on 2017/12/3.*/public class ConnectionUtil {/** 打开设置网络界面* *///判断网络public static void setNetworkMethod(final Context context){//提示对话框AlertDialog.Builder builder=new AlertDialog.Builder(context);builder.setTitle("网络设置提示").setMessage("网络连接不可用,是否进行设置?").setPositiveButton("设置", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubIntent intent=null;//判断手机系统的版本 即API大于10 就是3.0或以上版本if(android.os.Build.VERSION.SDK_INT>10){intent = new Intent(android.provider.Settings.ACTION_WIRELESS_SETTINGS);}else{intent = new Intent();ComponentName component = new ComponentName("com.android.settings","com.android.settings.WirelessSettings");intent.setComponent(component);intent.setAction("android.intent.action.VIEW");}context.startActivity(intent);}}).setNegativeButton("取消", new DialogInterface.OnClickListener() {@Overridepublic void onClick(DialogInterface dialog, int which) {// TODO Auto-generated method stubdialog.dismiss();}}).show();}}
相关文章推荐
- MVP实现用Retrofit请求网络数据Fresco加载图片,Recyclerview CheckBox显示并实现全选删除
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- Retrofit网络请求+Recyclerview展示数据+Fresco显示图片
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- MVP框架+RXJava+reftorfit请求网络数据+XRecycleView多条目展示(banner轮播+条目展示、刷新加载)、点击事件+fresco图片加载
- xUtils 获取网络数据 + RecycleView 显示数据+ F resco 加载图片 + ButterKnife 初始化控件
- 使用MVP+Retrofit+RxJava 图片加载使用Fresco 做网络请求并展示数据
- MVP+Retrofit+RxJava请求网络数据实现RecyclerView多条目展示
- Retrofit+RxJava+Fresco图片加载框 请求网络数据
- Kotlin实现Retrofit网络请求RecyclerView展示图片列表
- Kotlin新语言使用RxJava+Retrofit请求网络数据+lambda表达式+RecyclerView展示+Glide展示图片
- 展示数据使用:recyclerview,retrofit,greendao,butterknife,eventbus,fresco。实现效果图列表。MVP模式。
- MVP+retrofit和Rxjava请求数据+recyclerview展示
- Android使用OKHTTP网络框架请求数据,RecyclerView结合Glide展示图片,瀑布流布局样式
- GreenDao+ButterKnife+Retrofit+Fresco展示网络数据
- 带有侧滑菜单的+ 通过retrofit获取数据,通过fresco框架加载图片,使用TabLayout + ViewPage + Fragment + ListView 显示数据
- 新语言Kotlin使用recyclerview展示数据+retrofit请求数据+Rxjava
- Fresco图片加载+Eventbus跳转传值+Retrofit请求数据+GreenDao操作数据+Mvp分层+RecyclerView展示数据+ButtonKnife生成控件
- MVP+Retrofit+ReJava+Xrecyclerview请求展示数据
- Android Kotlin(二)—— Kotlin与Retrofit进行网络请求RecyclerView展示图片列表