andriodjie——MVP加RecycleView简单展示

来源:互联网 发布:js观察者模式应用 编辑:程序博客网 时间:2024/05/11 03:58


/** * Model里的请求数据 */

import okhttp3.Call;import okhttp3.Callback;import okhttp3.OkHttpClient;import okhttp3.Request;import okhttp3.Response;public class ShangpinActivityModel {    public void getData(boolean up,final ShangpinActivityModelListener listener){        OkHttpClient client = new OkHttpClient();        final Request request = new Request.Builder().url("http://m.yunifang.com/yunifang/mobile/home").build();        client.newCall(request).enqueue(new Callback() {            @Override            public void onFailure(Call call, IOException e) {                // 1 网络                listener.callBackFailure(1);            }            @Override            public void onResponse(Call call, Response response) throws IOException {                String result = response.body().string();                Gson gson = new Gson();                ShangPinBean bean =  gson.fromJson(result, ShangPinBean.class);                listener.callBackSuccess(bean);            }        });    }}
/** * Model里的接口 */

public interface ShangpinActivityModelListener {    //请求成功    public void callBackSuccess(ShangPinBean bean);    //请求失败    public void callBackFailure(int code);}


/** * 请求图片 */public class NetUtils {    public static void loadImage(Context context , String url , ImageView view){        Glide.with(context  )                .load(url)                .into(view);    }    public static String loadData(String urlPath){        try {            URL url = new URL(urlPath);            HttpURLConnection urlconnect = (HttpURLConnection) url.openConnection();            urlconnect.setRequestMethod("GET");            urlconnect.setConnectTimeout(5000);            urlconnect.setReadTimeout(5000);            if(urlconnect.getResponseCode() == 200){                InputStream is = urlconnect.getInputStream();                ByteArrayOutputStream baos = new ByteArrayOutputStream();                try {                    int len;                    byte[] b = new byte[1024];                    while( (len = is.read(b)) != -1 ){                        baos.write(b,0,len);                    }                } catch (IOException e) {                    e.printStackTrace();                }                System.out.println("LoadData = "+baos.toString());                return baos.toString();            }        } catch (Exception e) {            e.printStackTrace();        }        return null;    }}
/** * P层进行数据交互 */public class ShangpinPresenter {    //V层的接口    private ShangpinActivityViewListener listener;    //M层的方法    private ShangpinActivityModel shangpinActivityModel;    //P层进行交互    public ShangpinPresenter(ShangpinActivityViewListener listener){        this.listener = listener;        this.shangpinActivityModel = new ShangpinActivityModel();    }    public void getData(boolean up){        shangpinActivityModel.getData(up, new ShangpinActivityModelListener() {            @Override            public void callBackSuccess(ShangPinBean bean) {                listener.callBackSuccess(bean);            }            @Override            public void callBackFailure(int code) {                listener.callBackFailure(code);            }        });    }}
/** * V层接口 */public interface ShangpinActivityViewListener {    //请求成功传入参数    public void callBackSuccess(ShangPinBean bean);    //请求失败    public void callBackFailure(int code);}
/** * Activity展示数据
 */

import android.content.Context;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.GridLayoutManager;import android.support.v7.widget.RecyclerView;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;import android.widget.TextView;import com.example.usercenter.NetUtils.NetUtils;import com.example.usercenter.presenter.ShangpinPresenter;import com.example.usercenter.view.ShangpinActivityViewListener;public class ShangPinActivity extends AppCompatActivity implements ShangpinActivityViewListener {    private RecyclerView recyclerView;    private MyRecyclerViewAdapter adapter;    private ShangpinPresenter presenter;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_shang_pin);        recyclerView=(RecyclerView)findViewById(R.id.myRecycler);        presenter = new ShangpinPresenter(this);        presenter.getData(true);        GridLayoutManager linear=new GridLayoutManager(ShangPinActivity.this,1);        recyclerView.setLayoutManager(linear);    }//    public void qiehuan(View v){//        recyclerView.setLayoutManager(new GridLayoutManager(ShangPinActivity.this,2));//        myRecyclerViewAdapter.notifyDataSetChanged();//    }    @Override    public void callBackSuccess(final ShangPinBean bean) {        runOnUiThread(new Runnable() {            @Override            public void run() {                adapter=new MyRecyclerViewAdapter(ShangPinActivity.this,bean);                bean.getData();                recyclerView.setAdapter(adapter);            }        });    }    @Override    public void callBackFailure(int code) {    }    class MyRecyclerViewAdapter extends RecyclerView.Adapter<MyRecyclerViewAdapter.MyHolder> {        private Context context;        private ShangPinBean bean;        public MyRecyclerViewAdapter(Context context, ShangPinBean bean) {            this.context = context;            this.bean = bean;        }        @Override        public MyHolder onCreateViewHolder(ViewGroup parent, int viewType) {            MyHolder myHolder=new MyHolder(View.inflate(context,R.layout.item1,null));            System.out.println("xxxx"+myHolder);            return myHolder;        }        @Override        public void onBindViewHolder(MyHolder holder, int position) {            holder.item1_title.setText(bean.getData().getDefaultGoodsList().get(position).getGoods_name());            holder.item1_price.setText(""+(int) bean.getData().getDefaultGoodsList().get(position).getShop_price());            NetUtils.loadImage(ShangPinActivity.this,bean.getData().getDefaultGoodsList().get(position).getGoods_img(),holder.item1_iamge);        }        @Override        public int getItemCount() {            return bean.getData().getDefaultGoodsList().size();        }        public class MyHolder extends RecyclerView.ViewHolder {            final TextView item1_title;            final TextView item1_price;            final ImageView item1_iamge;            public MyHolder(View itemView) {                super(itemView);                item1_title = (TextView) itemView.findViewById(R.id.item1_title);                item1_price = (TextView) itemView.findViewById(R.id.item1_price);                item1_iamge=(ImageView) itemView.findViewById(R.id.item1_iamge);            }        }    }}


原创粉丝点击