版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
MVP使用
Modle 层:
实体类
public class DataModule {
List data = new ArrayList();
ModuleInterface mCallback;
public DataModule(ModuleInterface moduleInterface){
this.mCallback = moduleInterface;
}
//模拟数据处理
public void getdata() {
Observable.create(new ObservableOnSubscribe<List<String>>() {
@Override
public void subscribe(@NonNull ObservableEmitter<List<String>> e) throws Exception {
for (int i = 0; i <100; i++) {
data.add(i + "items");
}
e.onNext(data);
}
}).subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<List<String>>() {
@Override
public void onSubscribe(Disposable d) {
}
@Override
public void onNext(List<String> strings) {
mCallback.LoadSuccess(strings);
}
@Override
public void onError(Throwable e) {
mCallback.LoadFailed();
}
@Override
public void onComplete() {
}
});
}
}
接口
public interface ModuleInterface {
//获取数据状态回调的接口
void LoadSuccess(List<String> data);
void LoadFailed();
}
Presenter 层
实体类:
public class MvpPresenter implements ModuleInterface {
private MvpView mvpView;
//获取Module实例,执行数据处理方法。
DataModule dataModule = new DataModule(this);;
public MvpPresenter(MvpView mvpView){
this.mvpView = mvpView;
}
public void handledata() {
mvpView.showLoading();
dataModule.getdata();
}
public void onItemClick(int position){
mvpView.showMessage("点击了item"+position);
}
@Override
public void LoadSuccess(List<String> data) {
mvpView.hideLoading();
mvpView.setListItem(data);
}
@Override
public void LoadFailed() {
//处理失败后View的操作
mvpView.failed();
}
}
View 层
实体类:
public class MvpActivity extends AppCompatActivity implements MvpView,AdapterView.OnItemClickListener{
private ListView mvpListView;
private MvpPresenter mvpPresenter;
private ProgressBar pb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mvp);
mvpListView = (ListView)findViewById(R.id.mvp_listview);
mvpListView.setOnItemClickListener(this);
pb = (ProgressBar) findViewById(R.id.mvp_loading);
mvpPresenter = new MvpPresenter(this);
//开始执行
mvpPresenter.handledata();
}
@Override
public void showLoading() {
pb.setVisibility(View.VISIBLE);
}
@Override
public void hideLoading() {
pb.setVisibility(View.GONE);
}
@Override
public void setListItem(List<String> data) {
ArrayAdapter adapter = new ArrayAdapter(MvpActivity.this,android.R.layout.simple_list_item_1,data);
mvpListView.setAdapter(adapter);
}
@Override
public void failed() {
Toast.makeText(MvpActivity.this,"加载失败",Toast.LENGTH_SHORT).show();
}
@Override
public void showMessage(String message) {
Toast.makeText(this,message,Toast.LENGTH_SHORT).show();
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
mvpPresenter.onItemClick(position);
}
}
接口:
public interface MvpView {
void showLoading();
void hideLoading();
void setListItem(List<String> data);
void failed();
void showMessage(String message);
}