MVP框架
V层:
public interface MainView {
void success(String data);
void fail(String error);
}
M层接口:
public interface MainModel {
interface CallBackListener{
void success(String data);
void fail(String error);
}
//登录方法
void Login(String phone,String pwd,CallBackListener listener);
//注册方法
void Zhuce(String phone,String pwd,CallBackListener listener);
//展示方法
void getData(CallBackListener listener);
}
M层实现类:
public class MainModelIml implements MainModel {
@Override
public void Login(String phone, String pwd, CallBackListener listener) {
//请求数据
}
@Override
public void Zhuce(String phone, String pwd, CallBackListener listener) {
//请求数据
}
@Override
public void getData(final CallBackListener listener) {
//请求数据
String url = "http://172.17.8.100/movieApi/movie/v1/findHotMovieList?page=1&count=5";
new OkHttpUtils().get(url).result(new OkHttpUtils.HttpListener() {
@Override
public void success(String data) {
listener.success(data);
}
@Override
public void fail(String error) {
}
});
}
}
P层接口:
public interface MainPresenter {
void doLogin(String phone,String pwd);
void doZhuce(String phone,String pwd);
void doData();
}
P层实现类
public class MainPresenterIml implements MainPresenter, MainModel.CallBackListener {
private MainModel mainModel;
private MainView mainView;
public MainPresenterIml(MainModel mainModel, MainView mainView) {
this.mainModel = mainModel;
this.mainView = mainView;
}
@Override
public void doLogin(String phone, String pwd) {
mainModel.Login(phone,pwd,this);
}
@Override
public void doZhuce(String phone, String pwd) {
mainModel.Zhuce(phone,pwd,this);
}
@Override
public void doData() {
mainModel.getData(this);
}
@Override
public void success(String data) {
mainView.success(data);
}
@Override
public void fail(String error) {
mainView.fail(error);
}
}
展示数据适配器
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> {
private Context context;
private List<ListBean.ResultBean>list = new ArrayList<>();
private MyViewHolder myViewHolder;
public MyAdapter(Context context) {
this.context = context;
}
public void setList(List<ListBean.ResultBean> list) {
this.list = list;
notifyDataSetChanged();
}
@NonNull
@Override
public MyAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
View view = View.inflate(context, R.layout.rlv_item,null);
myViewHolder = new MyViewHolder(view);
return myViewHolder;
}
@Override
public void onBindViewHolder(@NonNull MyAdapter.MyViewHolder myViewHolder, int i) {
String title = list.get(i).getSummary();
myViewHolder.text1.setText(title);
Glide.with(context).load(list.get(i).getImageUrl()).into((ImageView) myViewHolder.itemView);
}
@Override
public int getItemCount() {
return list.size();
}
public class MyViewHolder extends RecyclerView.ViewHolder{
private final ImageView imageView;
private final TextView text1;
public MyViewHolder(@NonNull View itemView) {
super(itemView);
imageView = itemView.findViewById(R.id.image);
text1 = itemView.findViewById(R.id.text1);
}
}
}
MainActivity
public class MainActivity extends AppCompatActivity implements MainView {
private RecyclerView rlv;
private MyAdapter adapter;
private MainPresenterIml mainPresenterIml;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
rlv = findViewById(R.id.rlv);
LinearLayoutManager manager = new LinearLayoutManager(this);
manager.setOrientation(LinearLayoutManager.VERTICAL);
rlv.setLayoutManager(manager);
//适配器
adapter = new MyAdapter(this);
rlv.setAdapter(adapter);
//实例化P层实现类的对象
mainPresenterIml = new MainPresenterIml(new MainModelIml(),this);
//获取数据
mainPresenterIml.doData();
}
@Override
public void success(String data) {
ListBean bean = new Gson().fromJson(data,ListBean.class);
adapter.setList(bean.getResult());
}
@Override
public void fail(String error) {
}
}