M层
MainModelImpl
public class MainModelImpl { public void getData(final ModelCallBack callBack){ Call<MyBean> call = MyApp.iGetDataBase.get(); call.enqueue(new Callback<MyBean>() { @Override public void onResponse(Call<MyBean> call, Response<MyBean> response) { MyBean myBean = response.body(); Log.i("qqqqqqqqqqq", "onResponse: "+myBean+""); callBack.onSuccess(myBean); MyApp.daoSession.getNationsBeanDao().insertInTx(myBean.getResult().getNations()); } @Override public void onFailure(Call<MyBean> call, Throwable t) { callBack.onFailure(new Exception("")); } }); } }ModelCallBack
public interface ModelCallBack { public void onSuccess(MyBean myBean); public void onFailure(Exception e); }
V层
MainView
public interface MainView { public void onSuccess(MyBean myBean); public void onFailure(Exception e); }P层
MainPresenter
public class MainPresenter { private MainView mainView; private MainModelImpl mainModel; public MainPresenter(MainView mainView){ this.mainView = mainView; this.mainModel = new MainModelImpl(); } public void get(){ mainModel.getData(new ModelCallBack() { @Override public void onSuccess(MyBean myBean) { if(mainView != null){ mainView.onSuccess(myBean); } } @Override public void onFailure(Exception e) { if(mainView != null){ mainView.onFailure(e); } } }); } }IGetDataBase
public interface IGetDataBase { // API @GET("API/getShopOverview.ashx") Call<MyBean> get(); }MyApp
public class MyApp extends Application{ public static IGetDataBase iGetDataBase; public static DaoSession daoSession; @Override public void onCreate() { super.onCreate(); Fresco.initialize(this); Retrofit retrofit = new Retrofit.Builder().baseUrl("http://www.babybuy100.com") .addConverterFactory(GsonConverterFactory.create()) .build(); iGetDataBase = retrofit.create(IGetDataBase.class); DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"user"); Database database = helper.getWritableDb(); daoSession = new DaoMaster(database).newSession(); } }
EventBean
public class EventBean { public String url; public String title; public EventBean(String url , String title) { this.url = url; this.title = title; } public String getUrl() { return url; } public String getTitle() { return title; } }public class FragmentHome extends Fragment implements MainView { Context context; @BindView(R.id.recyclerView) RecyclerView recyclerView; Unbinder unbinder; MainPresenter presenter; MyApdater apdater; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.activity_one,null); unbinder = ButterKnife.bind(this, view); presenter = new MainPresenter(this); presenter.get(); LinearLayoutManager manager = new LinearLayoutManager(getActivity(),LinearLayoutManager.VERTICAL,false); recyclerView.setLayoutManager(manager); apdater = new MyApdater(getActivity()); recyclerView.setAdapter(apdater); List<NationsBean> advsBeans = MyApp.daoSession.getNationsBeanDao().loadAll(); for(NationsBean bean:advsBeans){ System.out.println(bean.toString()); } return view; } @Override public void onSuccess(final MyBean myBean) { apdater.addData(myBean); } @Override public void onFailure(Exception e) { } @Override public void onDestroyView() { super.onDestroyView(); unbinder.unbind(); } }public class SecondActivity extends AppCompatActivity{ @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); EventBus.getDefault().register(this); } @Subscribe() public void event(EventBean eventBean){ Toast.makeText(this,""+eventBean.getUrl()+""+eventBean.getTitle(),Toast.LENGTH_LONG).show(); } @Override protected void onDestroy() { super.onDestroy(); EventBus.getDefault().unregister(this); } }
Adapter
public class MyApdater extends RecyclerView.Adapter<MyApdater.MyViewHolder> { Context context; List<NationsBean> list; public MyApdater(Context context) { this.context = context; } public void addData(MyBean shopBean) { if (list == null) { list = new ArrayList<>(); } // Toast.makeText(context, "1", Toast.LENGTH_SHORT).show(); list.addAll(shopBean.getResult().getNations()); // Log.e("========","hhhhhh"); Toast.makeText(context, "1", Toast.LENGTH_SHORT).show(); notifyDataSetChanged(); } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = View.inflate(context, R.layout.item, null); MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, final int position){ holder.simpleDv.setImageURI(list.get(position).getFlagPic()); holder.tv.setText(list.get(position).getName()); holder.tv.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { EventBus.getDefault().postSticky(new EventBean(list.get(position).getFlagPic(), list.get(position).getName())); context.startActivity(new Intent(context, SecondActivity.class)); } }); } @Override public int getItemCount() { return list == null ? 0 : list.size(); } public class MyViewHolder extends RecyclerView.ViewHolder { @BindView(R.id.simpleDv) SimpleDraweeView simpleDv; @BindView(R.id.tv) TextView tv; public MyViewHolder(View itemView) { super(itemView); ButterKnife.bind(this, itemView); } } }