简单MVP实现

来源:互联网 发布:unity3d小地图制作 编辑:程序博客网 时间:2024/05/22 05:22

需要的依赖

    compile 'com.squareup.okhttp3:okhttp:3.2.0'    compile 'com.squareup.okio:okio:1.7.0'    compile 'com.android.support:recyclerview-v7:26.1.0'    compile 'com.squareup.picasso:picasso:2.5.2'    compile 'com.loopj.android:android-async-http:1.4.9'    compile 'com.squareup.okio:okio:1.5.0'    compile 'com.squareup.okhttp3:logging-interceptor:3.4.1'    compile 'com.google.code.gson:gson:2.8.2'


/**

 * 1. 类的用途 接口回调
 * 2. @author forever
 */

public interface OnFinishListener {
    void onSuccess(bean bean);
}


public interface beanview {
    void showData(bean bean);
}


public interface beanmondel {
    void getData(OnFinishListener listener);
}


public class beanmondelister implements beanmondel{

    private OkHttpClient mOkHttpClient;

    @Override
    public void getData(final OnFinishListener listener) {
        String PATH="http://result.eolinker.com/6rdnXgZ20130cc07fd3b192ce2715f6df4113e76fe201df?uri=more";
        AsyncHttpClient asyncHttpClient = new AsyncHttpClient();
        asyncHttpClient.get(PATH, new TextHttpResponseHandler() {
            @Override
            public void onFailure(int statusCode, Header[] headers, String responseString, Throwable throwable) {

            }

            @Override
            public void onSuccess(int statusCode, Header[] headers, String responseString) {
                //直接加高到主线程
                Gson gson = new Gson();
                bean bean = gson.fromJson(responseString, bean.class);
                System.out.println("1234567890-09876567890-=-0987670-=-0987"+bean.toString());
                //接口回调
                if (listener!=null){
                    listener.onSuccess(bean);
                }

            }
        });

//        OkHttpClient client = new OkHttpClient();
//        Request request = new Request.Builder()
//                .get()
//                .url(PATH)
//                .build();
//        client.newCall(request).enqueue(new Callback() {
//            @Override
//            public void onFailure(Call call, IOException e) {
//
//            }
//            @Override
//            public void onResponse(Call call, final Response response) throws IOException {
//
//                new Thread(new Runnable() {
//                    @Override
//                    public void run() {
//                        String s = response.body().toString();
//
//                        Gson gson = new Gson();
//                        bean bean = gson.fromJson(s, bean.class);
//                        //接口回调
//                        if (listener!=null){
//                            listener.onSuccess(bean);
//                        }
//                    }
//                });
//
//            }
//        });
    }

}





public interface beanpersenter {
    void relevance();
}






public class beanpersenterinter implements beanpersenter ,OnFinishListener {
    beanview beanview;
    private final beanmondelister beanmondelister;

    //初始化
    public beanpersenterinter(beanview beanview){
        this.beanview  = beanview;
        //多态
        beanmondelister = new beanmondelister();
    }
    @Override
    public void relevance() {
        //p跟m关联
        beanmondelister.getData(this);
    }

    @Override
    public void onSuccess(bean bean) {
        //关联view
        beanview.showData(bean);
    }
}






public class MainActivity extends AppCompatActivity  implements beanview{
    private RecyclerView rlr;
    private LinearLayoutManager linearLayoutManager;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找控件
        rlr =findViewById(R.id.recycler);
        linearLayoutManager = new LinearLayoutManager(this);
        rlr.setLayoutManager(linearLayoutManager);
        //p关联v
        beanpersenterinter presenter = new beanpersenterinter(this);
        //p关联m 做网络请求
        presenter.relevance();
    }
    @Override
    public void showData(bean bean) {
        MyAdapter adapter = new MyAdapter(this,bean);
        rlr.setAdapter(adapter);
    }
}







public class MyAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {
    Context context;
    bean bean;

    public MyAdapter(Context context, bean bean) {
        this.context = context;
        this.bean = bean;
    }

    @Override
    public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = View.inflate(context, R.layout.item, null);
        MyViewHolder holder = new MyViewHolder(view);
        return holder;
    }

    @Override
    public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
        MyViewHolder myViewHolder = (MyViewHolder) holder;
        List<bean.DataBean> data = bean.getData();
        bean.DataBean dataBean = data.get(0);
        String title = dataBean.getNotice().get(position).getNoticeTitle();
        String imageurl = dataBean.getImg().get(position).toString();
        myViewHolder.tv_title.setText(title);
        Picasso.with(context).load(imageurl).placeholder(R.mipmap.ic_launcher).into(myViewHolder.iv);
    }

    @Override
    public int getItemCount() {
        return bean.getData().size();
    }
    public class MyViewHolder extends RecyclerView.ViewHolder{

        private final TextView tv_title;
        private final ImageView iv;

        public MyViewHolder(View itemView) {
            super(itemView);
            tv_title = itemView.findViewById(R.id.tv_title);
            iv = itemView.findViewById(R.id.iv);

        }
    }
}


原创粉丝点击