Molde层
package com.lixinyang.mvp_test.Model; /** * author:Created by WangZhiQiang on 2018/1/4. */ public interface Imodel { void setimodel(Bean bean,getHttpclient httpclient); }================================================================
package com.lixinyang.mvp_test.Model; import java.util.List; /** * author:Created by WangZhiQiang on 2018/1/4. */ public interface getHttpclient { void succrss(List<image.ResultBean.DataBean> data); void error(String error); }=================================================================
package com.lixinyang.mvp_test.Model; import android.annotation.SuppressLint; import android.os.Handler; import android.os.Message; import android.os.SystemClock; import com.google.gson.Gson; import java.io.IOException; import java.util.List; import okhttp3.Call; import okhttp3.OkHttpClient; import okhttp3.Request; import okhttp3.Response; /** * author:Created by WangZhiQiang on 2018/1/4. */ public class implmodel implements Imodel { @SuppressLint("HandlerLeak") Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); OkHttpClient okHttpClient = new OkHttpClient(); Request build = new Request.Builder().url(bean.getUri()).build(); Call call = okHttpClient.newCall(build); call.enqueue(new okhttp3.Callback() { @Override public void onFailure(Call call, IOException e) { httpclient.error("对不起请求失败"+call.toString()); } @Override public void onResponse(Call call, Response response) throws IOException { String string = response.body().string(); Gson gson = new Gson(); image image = gson.fromJson(string, image.class); List<image.ResultBean.DataBean> data = image.getResult().getData(); httpclient.succrss(data); } }); } }; private Bean bean; private getHttpclient httpclient; @Override public void setimodel(Bean bean, getHttpclient httpclient) { this.bean = bean; this.httpclient = httpclient; new Thread(){ @Override public void run() { SystemClock.sleep(1000); handler.sendEmptyMessage(0); } }.start(); } }======================================================================================
package com.lixinyang.mvp_test.Model; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import com.lixinyang.mvp_test.R; import java.util.List; /** * author:Created by WangZhiQiang on 2018/1/4. */ public class MyAdapter extends RecyclerView.Adapter<MyAdapter.MyViewHolder> { private List<image.ResultBean.DataBean> list; private Context context; public MyAdapter(Context context, List<image.ResultBean.DataBean> list){ this.context = context; this.list = list; } @Override public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { View view = LayoutInflater.from(context).inflate(R.layout.activity_item, null); MyViewHolder holder = new MyViewHolder(view); return holder; } @Override public void onBindViewHolder(MyViewHolder holder, int position) { TextView textView = holder.getTextView(); textView.setText(list.get(position).getTitle()); } @Override public int getItemCount() { return list.size(); } class MyViewHolder extends RecyclerView.ViewHolder{ private TextView textView; public MyViewHolder(View itemView) { super(itemView); this.textView = itemView.findViewById(R.id.tv); } public TextView getTextView() { return textView; } public void setTextView(TextView textView) { this.textView = textView; } } }==============================================================================
View层
package com.lixinyang.mvp_test.View; import android.content.Context; import android.support.v7.widget.RecyclerView; import com.lixinyang.mvp_test.Model.image; import java.util.List; /** * author:Created by WangZhiQiang on 2018/1/4. */ public interface Iview { void showprogressbar(); void hideprogressbar(); String geturi(); RecyclerView getrv(); void setAdapter(Context context, List<image.ResultBean.DataBean> list); void no(String no); }===========================================================================================
package com.lixinyang.mvp_test.View; import android.content.Context; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.View; import android.widget.Button; import android.widget.ProgressBar; import android.widget.Toast; import com.lixinyang.mvp_test.Model.MyAdapter; import com.lixinyang.mvp_test.Model.image; import com.lixinyang.mvp_test.Model.implmodel; import com.lixinyang.mvp_test.Presenter.implpresenter; import com.lixinyang.mvp_test.R; import java.util.List; public class MainActivity extends AppCompatActivity implements Iview { private Button btn; private RecyclerView rv; String key = "2f41498b35e69877fc56dc96776e5d1f"; String uri = "http://v.juhe.cn/toutiao/index?type=top&key="+key; private ProgressBar pb; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { btn = (Button) findViewById(R.id.btn); rv = (RecyclerView) findViewById(R.id.rv); pb = (ProgressBar) findViewById(R.id.pb); rv.setLayoutManager(new LinearLayoutManager(MainActivity.this)); rv.setItemAnimator(new DefaultItemAnimator()); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { implpresenter implpresenter = new implpresenter(); implpresenter.viewandmodle(MainActivity.this,new implmodel(),MainActivity.this); } }); } @Override public void showprogressbar() { runOnUiThread(new Runnable() { @Override public void run() { pb.setVisibility(View.VISIBLE); } }); } @Override public void hideprogressbar() { runOnUiThread(new Runnable() { @Override public void run() { pb.setVisibility(View.INVISIBLE); } }); } @Override public String geturi() { return uri; } @Override public RecyclerView getrv() { return rv; } @Override public void setAdapter(Context context, final List<image.ResultBean.DataBean> list) { runOnUiThread(new Runnable() { @Override public void run() { MyAdapter adapter = new MyAdapter(MainActivity.this,list); rv.setAdapter(adapter); } }); } @Override public void no(final String no) { runOnUiThread(new Runnable() { @Override public void run() { Toast.makeText(MainActivity.this,no,Toast.LENGTH_SHORT).show(); } }); } }================================================================================================
presenter层
package com.lixinyang.mvp_test.Presenter; import android.content.Context; import com.lixinyang.mvp_test.Model.Imodel; import com.lixinyang.mvp_test.View.Iview; /** * author:Created by WangZhiQiang on 2018/1/4. */ public interface Ipresenter { void viewandmodle(Context context,Imodel imodel, Iview iview); }=================================================================================
package com.lixinyang.mvp_test.Presenter; import android.content.Context; import com.lixinyang.mvp_test.Model.Bean; import com.lixinyang.mvp_test.Model.Imodel; import com.lixinyang.mvp_test.Model.getHttpclient; import com.lixinyang.mvp_test.Model.image; import com.lixinyang.mvp_test.View.Iview; import java.util.List; /** * author:Created by WangZhiQiang on 2018/1/4. */ public class implpresenter implements Ipresenter { @Override public void viewandmodle(final Context context , Imodel imodel, final Iview iview) { iview.showprogressbar(); imodel.setimodel(new Bean(iview.geturi(), iview.getrv()), new getHttpclient() { @Override public void succrss(List<image.ResultBean.DataBean> data) { iview.hideprogressbar(); iview.setAdapter(context,data); } @Override public void error(String error) { iview.hideprogressbar(); } }); } }