MVP+Retrofit+fresco+greendao+eventbus

compile 'com.squareup.retrofit2:retrofit:2.3.0'
compile 'com.squareup.retrofit2:converter-gson:2.3.0'

compile 'com.android.support:recyclerview-v7:26.1.0'

compile 'com.jakewharton:butterknife:8.8.1'
annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'

compile 'com.facebook.fresco:fresco:1.5.0'

compile 'org.greenrobot:eventbus:3.1.1'

compile 'org.greenrobot:greendao:3.2.2'
compile 'org.greenrobot:greendao:3.2.2'
apply plugin: 'org.greenrobot.greendao' // apply plugin
 classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin

 greendao {
        schemaVersion 1
        daoPackage 'test.bwie.com.lijianzkdemo.dao'
        targetGenDir 'src/main/java'
    }

public interface ModelCallBack {

    public  void  success(Bean bean);
    public  void  failure(Exception e);

}

public class MyModl {

          public  void  getData(final ModelCallBack callBack){

             Call<Bean>  call= IApp.service.get("88f7bbc507e3ecacfaeab2b47dd8936f");
              call.enqueue(new Callback<Bean>() {
                  @Override
                  public void onResponse(Call<Bean> call, Response<Bean> response) {
                    Bean bean=  response.body();
                      callBack.success(bean);
                        //添加
                      IApp.session.getListBeanDao().insertInTx(bean.getResult().getList());
                  }

                  @Override
                  public void onFailure(Call<Bean> call, Throwable t) {

                      callBack.failure(new Exception(""));
                  }
              });
          }

    public List<ListBean> getdb(DaoSession session){
        List<ListBean> list = session.getListBeanDao().loadAll();
        return list;
    }


}

public interface MyView {


    public  void  success(Bean bean);
    public  void  failure(Exception e);

}


public class MyPresenter {

      private MyView myView;
     private MyModl myModl;
    public MyPresenter(MyView myView) {
        this.myView = myView;
        this.myModl=new MyModl();
    }

    public List<ListBean> getdb(){
        List<ListBean> list = myModl.getdb(IApp.session);
        return list;
    }


    public  void  getData(){

           myModl.getData(new ModelCallBack() {
               @Override
               public void success(Bean bean) {
                   if (myView!=null){

                        myView.success(bean);
                   }

               }

               @Override
               public void failure(Exception e) {
                   if (myView!=null){

                       myView.failure(e);
                   }
               }
           });

    }



}

public class IApp extends Application {
public  static   MyRetrofit service;
public  static  DaoSession session;
    @Override
    public void onCreate() {
        super.onCreate();
        Fresco.initialize(this);

       Retrofit retrofit =   new Retrofit.Builder()
               .baseUrl("http://v.juhe.cn")
               .addConverterFactory(GsonConverterFactory.create())
               .build();
           service=   retrofit.create(MyRetrofit.class);

        DaoMaster.DevOpenHelper helper=   new DaoMaster.DevOpenHelper(this,"1203");
           Database database= helper.getWritableDb();
       session= new DaoMaster(database).newSession();
    }
}
public class RecyclerviewAdapter extends RecyclerView.Adapter<RecyclerviewAdapter.IViewHolder>{
    private Context context;
    private List<ListBean> list;

    public RecyclerviewAdapter(Context context) {
        this.context = context;
    }

    public  void  add(Bean bean){
           if (list==null){
               this.list=new ArrayList<>();
           }

           list.addAll(bean.getResult().getList());
            notifyDataSetChanged();
    }

    public void addList(List bean) {
        if (list == null) {
            list = new ArrayList<>();
        }
        list.addAll(bean);
        notifyDataSetChanged();
    }


    @Override
    public RecyclerviewAdapter.IViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        View view = View.inflate(context, R.layout.layout_item, null);

        return new IViewHolder(view);
    }

    @Override
    public void onBindViewHolder(RecyclerviewAdapter.IViewHolder holder, final int position) {

        holder.itemTv.setText(list.get(position).getTitle());
        holder.simpleview.setImageURI(list.get(position).getFirstImg());

        holder.itemTv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                EventBus.getDefault().postSticky(new EventBusBean(list.get(position).getTitle()));

                context.startActivity(new Intent(context,Main2Activity.class));
            }
        });


    }

    @Override
    public int getItemCount() {
        return list==null?0:list.size();
    }

    static class IViewHolder extends RecyclerView.ViewHolder{
        @BindView(R.id.simpleview)
        SimpleDraweeView simpleview;
        @BindView(R.id.item_tv)
        TextView itemTv;

        IViewHolder(View view) {
            super(view);
            ButterKnife.bind(this, view);
        }
    }



}

public interface MyRetrofit {

//http://v.juhe.cn/weixin/query?key=88f7bbc507e3ecacfaeab2b47dd8936f
    @GET("weixin/query")
    Call<Bean> get(@Query("key") String key);

}
public class MainActivity extends AppCompatActivity implements MyView{

    @BindView(R.id.recyclerview)
    RecyclerView recyclerview;
   private MyPresenter presenter;
   private  RecyclerviewAdapter adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
          presenter= new MyPresenter(this);
          presenter.getData();

        adapter=  new RecyclerviewAdapter(this);
        LinearLayoutManager manager=new LinearLayoutManager(this);
          recyclerview.setLayoutManager(manager);
            recyclerview.setAdapter(adapter);


        List<ListBean> list1 = presenter.getdb();
        if(list1 == null || list1.size() == 0){
            presenter.getData();
        }else {
            adapter.addList(list1);
        }
        List<ListBean> list = IApp.session.getListBeanDao().loadAll();
        for (ListBean newslistBean : list) {
            System.out.println(newslistBean.toString());
        }

    }


    @Override
    public void success(Bean bean) {

        adapter.add(bean);
    }

    @Override
    public void failure(Exception e) {

    }
}

 
public class EventBusBean {

     private String title;

    public EventBusBean(String title) {
        this.title = title;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }
}
public class Main2Activity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
        EventBus.getDefault().register(this);
    }

   @Subscribe(sticky = true)
   public  void  event(EventBusBean busBean){

       Toast.makeText(this, ""+busBean.getTitle(), Toast.LENGTH_SHORT).show();
   }


    @Override
    protected void onDestroy() {
        super.onDestroy();
        EventBus.getDefault().unregister(this);
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值