一.网络加载接口
public interface ListCallBack<T> {
void onShowSuccess(List<Person.DataBean> result);
void onShowFailer(String msg);
}
二.view层
public interface IListView {
//展示成功
void onListView(List<Person.DataBean> listview);
//展示失败
void onFailer(String error);
}
三.Model层(处理数据,这里有网络封装类)
public class ListModel {
public void login(String path, final ListCallBack listCallBack) {
HttpUtils httpUtils = new HttpUtils();
httpUtils.getpath(path);
httpUtils.getHelpListener(new HttpUtils.GetData() {
@Override
public void setString(String s) {
Gson gson = new Gson();
//这里有一个类,获取请求码
Person person = gson.fromJson(s, Person.class);
List<Person.DataBean> data = person.getData();
if (person.getCode() == 1) {
listCallBack.onShowSuccess(data);
} else {
listCallBack.onShowFailer("展示失败");
}
}
});
}
}
四.Presenter层
public class ListPresenter {
private IListView iLoginView;
private ListModel listModel;
public ListPresenter(IListView iLoginView) {
this.iLoginView = iLoginView;
listModel = new ListModel();
}
public void login(String path) {
listModel.login(path, new ListCallBack<List>() {
@Override
public void onShowSuccess(List<Person.DataBean> result) {
iLoginView.onListView(result);
}
@Override
public void onShowFailer(String msg) {
}
});
}
}
五.在Activity层
public class ShowActivity extends AppCompatActivity implements IListView, View.OnClickListener {
private SearchView searchview;
private Button change;
private GridView gridview;
private ListPresenter listPresenter;
private String path = "http://www.xieast.com/api/news/news.php?page=1";
private Button mButtonExit;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show);
initView();
//初始化控件
init();
searchview.setQueryHint("请输入搜索内容");
//点击扫一扫
change.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(ShowActivity.this, ScanActivity.class));
}
});
listPresenter.login(path);
}
private void init() {
searchview = (SearchView) findViewById(R.id.searchview);
change = (Button) findViewById(R.id.change);
gridview = (GridView) findViewById(R.id.gridview);
listPresenter = new ListPresenter(this);
}
@Override
public void onListView(List<Person.DataBean> listview) {
MyAdapter myAdapter = new MyAdapter(ShowActivity.this, listview);
gridview.setAdapter(myAdapter);
}
@Override
public void onFailer(String error) {
Toast.makeText(this, "展示失败", Toast.LENGTH_SHORT).show();
}
}