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