andriodjie——MVP加RecycleView简单展示


/** * 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);
            }
        }
    }

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值