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); } } }}
阅读全文
0 0
- andriodjie——MVP加RecycleView简单展示
- andriodjie——recycleview
- andriodjie——mvp展示拦截器传来的数据跳转购物车
- Andriodjie——登陆注册展示商品
- Retrofit+RxJava+Okhttp+RecycleView+MVP简单的展示数据
- Andriodjie——简单的购物车全选反选
- andriodjie——xRecyclerView网络获取数据简单实现
- MVP结合(RecycleView,Retorfit,GreenDao和EventBus)数据展示
- Andriodjie——画圆3秒跳转
- Andriodjie——OKhttp拦截器
- Andriodjie——自定义头布局
- andriodjie——实现小圆点
- RecycleView多类型展示,简单轮播图
- MVP结合RecycleView,利用retrofit与RxJava简单请求数据
- Andriodjie——RecyclerView点击查看商品详情
- Andriodjie——二级列表实现购物车
- Andriodjie——二级列表实现购物车
- recycleview加载数据实现数据刷新上拉下拉 Demo 用到retrofit 和mvp模式 图片展示
- ABBYY FineReader 14新增功能
- WSingle站群系统,全网唯一支持【站群】的WordPress小说主题!
- SD/MMC卡初始化及读写流程
- 危险的_strdup函数
- 关于微信第三方平台$APPID$.wx.abc.com的问题
- andriodjie——MVP加RecycleView简单展示
- 板载电源设计
- V4L2源代码之旅六:源码追踪
- GO语言接口
- nodejs express 允许跨域访问(Access-Control-Allow-Origin)
- 周志华《Machine Learning》学习笔记(12)--降维与度量学习
- 共享篮球方案开发
- 学习java的一些目标想法
- 机器学习--KNN算法带你光棍节脱单