MVP实现分页加载
来源:互联网 发布:音效软件 知乎 编辑:程序博客网 时间:2024/06/05 15:40
使用MVP达到了代码的解耦性
view层
public interface IGoods { //搜索商品 回调结果 void GetGoods(List<ShopBean.DataBean> dlist);}
//model层的接口
/** * 1. 类的用途 * 2. @author chensi * 3. @date 2017/10/14 11:08 */public interface IGoodsModel { void getGoods(Context context, IGoods iGoods, String name, int page);}
//继承model接口
/** * 1. 类的用途 * 2. @author chensi * 3. @date 2017/10/14 11:09 */public class GoodsModel implements IGoodsModel{ Context context; IGoods iGoods; private List<ShopBean.DataBean> data; public GoodsModel(Context context, IGoods iGoods) { this.context = context; this.iGoods = iGoods; } @Override public void getGoods(Context context, IGoods iGoods, String name,int page) { //请求网路数据 if(name!=null&&!"".equals(name)){ getHttpGoods(name,page); }else{ Toast.makeText(context,"输入不能为空",Toast.LENGTH_SHORT).show(); } } private void getHttpGoods(String name,int page) { Map<String,String> map=new HashMap<>(); map.put("keywords",name); map.put("page",page+""); OkHttp3Utils.doPost(Api.SHOP, map, new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { String string1 = response.body().string(); Message message=new Message(); message.obj=string1; message.what=0; handler.sendMessage(message); } }); } Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: String string1= (String) msg.obj; Gson gson=new Gson(); ShopBean shopBean = gson.fromJson(string1, ShopBean.class); data = shopBean.getData(); iGoods.GetGoods(data); break; } } };}
//presenter
实现presenter接口/** * 1. 类的用途 * 2. @author chensi * 3. @date 2017/10/14 11:07 */public interface IGoodsPresenter { void GetMyGoods(Context context, String name, int p);}
activity的操作/** * @author ${**} * @date 2017/10/15/23:32 */public class GoodsPresenter implements IGoodsPresenter { private IGoods iGoods; private IGoodsModel iGoodsModel; public GoodsPresenter(IGoods iGoods,Context context) { this.iGoods = iGoods; iGoodsModel=new GoodsModel(context,iGoods); } @Override public void GetMyGoods(Context context, String name, int p) { iGoodsModel.getGoods(context,iGoods,name,p); }}
public class MainActivity_Shop extends AppCompatActivity implements IGoods { @Bind(R.id.back) ImageView back; @Bind(R.id.et) EditText et; @Bind(R.id.checkbox_cb) CheckBox checkboxCb; @Bind(R.id.pr) PullLoadMoreRecyclerView pr; private IGoodsPresenter presenter; int page=1; Handler handler=new Handler(); private List<ShopBean.DataBean> data; private MyAdapter adapter; int flag=0; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main__shop); ButterKnife.bind(this); pr.setLinearLayout(); presenter = new GoodsPresenter(this,MainActivity_Shop.this); pr.setOnPullLoadMoreListener(new PullLoadMoreRecyclerView.PullLoadMoreListener() { @Override public void onRefresh() { handler.postDelayed(new Runnable() { @Override public void run() { page=1; String string = et.getText().toString(); presenter.GetMyGoods(MainActivity_Shop.this,string,page); pr.setPullLoadMoreCompleted(); } },2000); } @Override public void onLoadMore() { handler.postDelayed(new Runnable() { @Override public void run() { page++; String string = et.getText().toString(); presenter.GetMyGoods(MainActivity_Shop.this,string,page); pr.setPullLoadMoreCompleted(); } },2000); } }); et.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { } @Override public void afterTextChanged(Editable s) { if (!TextUtils.isEmpty(et.getText().toString())) { //搜索 String string = et.getText().toString(); presenter.GetMyGoods(MainActivity_Shop.this,string,page); } } }); } @Override public void GetGoods(final List<ShopBean.DataBean> dlist) { if (page==1){ data=new ArrayList<ShopBean.DataBean>(); } for (int i=0;i<dlist.size();i++){ data.add(dlist.get(i)); } initData(data); checkboxCb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (adapter!=null){ if (checkboxCb.isChecked()){ pr.setLinearLayout(); MyAdapter adapter1=new MyAdapter(MainActivity_Shop.this,dlist,0); pr.setAdapter(adapter1); adapter1.notifyDataSetChanged(); }else { pr.setGridLayout(2); MyAdapter adapter1=new MyAdapter(MainActivity_Shop.this,dlist,1); pr.setAdapter(adapter1); adapter1.notifyDataSetChanged(); } } } }); } public void initData(final List<ShopBean.DataBean> list){ if (adapter==null){ adapter=new MyAdapter(this,list,flag); pr.setAdapter(adapter); }else { adapter.notifyDataSetChanged(); } adapter.setonRecyclerViewItemClickListener(new MyAdapter.onRecyclerViewItemClickListener() { @Override public void onRecyclerViewItemClick(int position) { String detailUrl = list.get(position).getDetailUrl(); Intent it=new Intent(MainActivity_Shop.this,MainActivity_Shop_Web.class); it.putExtra("pid",list.get(position).getPid()); it.putExtra("sellerid",list.get(position).getSellerid()); it.putExtra("detailUrl",detailUrl); startActivity(it); } }); }}
阅读全文
0 0
- MVP实现分页加载
- ASP.NET MVP分页的实现
- listView实现分页加载
- MVP实现xRecyclerview多条目加载
- MVP+Retrofit+RecyclerView实现加载网络数据
- 怎么实现listview分页加载
- listView实现分页加载数据
- 74_ListView实现分页加载
- 简单的分页加载实现
- Android ListView 分页加载实现
- listview如何实现分页加载
- ListView 加载数据实现分页加载功能
- Android之MVP模式实现登录和网络数据加载
- Android-mvp&mvvm分别实现列表加载-demo
- MVP实现RecyclerView上拉刷新,下拉加载
- MVP+Rxjava+Retryfit+分页加载+RecyclerView展示,解析以集合开头的json数据
- MVP+Rxjava+Retryfit+分页加载+RecyclerView展示,解析以集合开头的json数据
- android 实现listview的分页加载
- 金蝶问题
- Gulp教程(1)-基础总结
- hive--基础操作
- Java数据结构与算法解析(一)——表
- String格式的时间转换为Date类型
- MVP实现分页加载
- angularjs-多种查询方法-月份查询
- 欢迎使用CSDN-markdown编辑器
- ionic+angulars app启动流程解析
- vscode : how to fix "XHR Failed" when you open extension panel
- python连接hiveserver2
- ImageView图片的自动轮播
- resultype四种之一默认的resultType
- 让更多的人认真的听音乐,Hidizs AP200国内首发上线