Android 简单的MVP实例
来源:互联网 发布:新东方网络视频哪里买 编辑:程序博客网 时间:2024/04/19 17:55
版权声明:本文为博主原创文章,未经博主允许不得转载
实现一个简单的mvp demo,实现view与model的解耦,采用presenter将view与model绑定在一起,完成View跟Model间的交互,好了,废话不多说了,直接看代码:
新建一个module,展示图片的一个简单demo。
demo机构图(看到图片相信大家能够清晰地理解):
TestBean代码:
package com.example.simplemvp.beans;/** * Created by feng on 2017/3/13. */public class TestBean{ private String msg; private int icon; public TestBean(String msg, int icon) { this.msg = msg; this.icon = icon; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public int getIcon() { return icon; } public void setIcon(int icon) { this.icon = icon; }}
加载数据的model接口:
package com.example.simplemvp.model;import com.example.simplemvp.beans.TestBean;import java.util.List;/** * Created by feng on 2017/3/13. */public interface ITestBeanModel{ //加载数据 void loadTestBeans(TestOnLoadListener listener); //加载数据的接口 interface TestOnLoadListener { void onCompelete(List<TestBean> grils); }}
model接口的实现类:
package com.example.simplemvp.model;import com.example.simplemvp.R;import com.example.simplemvp.beans.TestBean;import java.util.ArrayList;import java.util.List;/** * Created by feng on 2017/3/13. */public class ITestBeanModelImpv implements ITestBeanModel{ @Override public void loadTestBeans(TestOnLoadListener listener) { List<TestBean> datas = new ArrayList<TestBean>( ); datas.add(new TestBean( "我是图一", R.mipmap.th_01)); datas.add(new TestBean( "我是图二", R.mipmap.th_02)); datas.add(new TestBean( "我是图三", R.mipmap.th_03)); datas.add(new TestBean( "我是图四", R.mipmap.th_04)); datas.add(new TestBean( "我是图五", R.mipmap.th_05)); datas.add(new TestBean( "我是图六", R.mipmap.th_06)); datas.add(new TestBean( "我是图七", R.mipmap.th_07)); datas.add(new TestBean( "我是图八", R.mipmap.th_08)); datas.add(new TestBean( "我是图九", R.mipmap.th_09)); datas.add(new TestBean( "我是图十", R.mipmap.th_10)); datas.add(new TestBean( "我是图十一", R.mipmap.th_11)); datas.add(new TestBean( "我是图十二", R.mipmap.th_12)); listener.onCompelete( datas ); }}
View的展示接口:
package com.example.simplemvp.view;import com.example.simplemvp.beans.TestBean;import java.util.List;/** * Created by feng on 2017/3/13. */public interface ITestBeanView{ //显示数据 void showGrils(List<TestBean> tests);}
Model与View的交互类Presenter:
package com.example.simplemvp.presenter;import com.example.simplemvp.beans.TestBean;import com.example.simplemvp.model.ITestBeanModel;import com.example.simplemvp.model.ITestBeanModelImpv;import com.example.simplemvp.view.ITestBeanView;import java.util.List;/** * Created by feng on 2017/3/13. */public class TestBeanPresenter{ ITestBeanView mTestBeanView; ITestBeanModel testBeanModel = new ITestBeanModelImpv(); public TestBeanPresenter(ITestBeanView mTestBeanView) { this.mTestBeanView = mTestBeanView; } /** * bind view and model */ public void fentch() { //显示进度条 if(testBeanModel != null) { testBeanModel.loadTestBeans( new ITestBeanModel.TestOnLoadListener() { @Override public void onCompelete(List<TestBean> grils) { mTestBeanView.showGrils( grils ); } }); } }}
数据适配器adapter:
package com.example.simplemvp.adapter;import android.content.Context;import android.view.View;import android.view.ViewGroup;import android.widget.BaseAdapter;import android.widget.ImageView;import android.widget.TextView;import com.example.simplemvp.R;import com.example.simplemvp.beans.TestBean;import java.util.List;/** * Created by feng on 2017/3/13. */public class MyTestAdapter extends BaseAdapter{ private List<TestBean> mDatas; private Context mContext; public MyTestAdapter(List<TestBean> mDatas,Context context) { this.mDatas = mDatas; this.mContext = context; } @Override public int getCount() { return mDatas.size(); } @Override public Object getItem(int position) { return mDatas.get( position ); } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHold hold = new ViewHold(); if(convertView == null) { convertView = View.inflate( mContext, R.layout.list_item, null ); hold.mIv = (ImageView) convertView.findViewById( R.id.image_name ); hold.mTvName = (TextView) convertView.findViewById( R.id.tv_name ); convertView.setTag( hold ); }else { hold = (ViewHold) convertView.getTag(); } hold.mIv.setBackgroundResource( mDatas.get( position).getIcon() ); hold.mTvName.setText( mDatas.get( position ).getMsg() ); return convertView; } class ViewHold { ImageView mIv; TextView mTvName; TextView mTvAge; }}
最后主MainActivity类 :
package com.example.simplemvp;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.ListView;import com.example.simplemvp.adapter.MyTestAdapter;import com.example.simplemvp.beans.TestBean;import com.example.simplemvp.presenter.TestBeanPresenter;import com.example.simplemvp.view.ITestBeanView;import java.util.List;public class MainActivity extends AppCompatActivity implements ITestBeanView{ private ListView mListview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate( savedInstanceState ); setContentView( R.layout.activity_main ); mListview = (ListView) findViewById( R.id.list_test ); //中间者,让他触发加载数据 new TestBeanPresenter( this).fentch(); } @Override public void showGrils(List<TestBean> tests) { mListview.setAdapter( new MyTestAdapter( tests, getApplicationContext() ) ); }}
效果图:
布局比较简单,这里就不做代码的展示了,最后谢谢大家的支持,喜欢的请顶一个
源码链接地址
0 0
- Android 简单的MVP实例
- 简单Android MVP 实例
- MVP的简单实例
- 吴小龙的 mvp Android MVP 实例
- MVP模式&简单实例
- Retrofit+mvp简单实例
- android中MVP的理解和实例
- Android中Mvp的使用实例
- Android中MVP模式的实例
- Android MVP 实例运用
- Android MVP 实例
- Android MVP 实例
- android mvp实例
- Android MVP 实例
- Android MVP设计的简单理解
- Android mvp的简单使用和实现
- Android中使用MVP的简单封装
- Android中MVP模式的简单实现
- tensorflow function笔记: dropout
- NYOJ-71 独木舟上的旅行(贪心)
- Java EE知识储备(五)
- linux几个常用命令总结
- Python_01
- Android 简单的MVP实例
- hduoj 2019数列有序
- Alluxio增强Spark和MapReduce存储能力
- pat-a1091. Acute Stroke (30)
- 获取Android设备唯一标识码
- UWP 入门笔记之学习资源
- poj 1850 Code(组合计数)
- 关于Ubuntu系统无法搜索到wifi信号的解决办法
- String为什么不可变