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