一,在上一步购物车之列表展示数据中的适配器中自定义回调接口用来创建条目点击事件
//子条目点击的方法 private Click click; public void setClick(Click click) { this.click = click; } public interface Click{ void itemclick(int position); }
二,然后再适配器中,把参数传过去
//点击监听 view.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int pid = lists.get(position).getPid(); click.itemclick(pid); } });
三,在ACTIVITY中接收到传过来的值
// 接收上边传过来的值 Intent intent = getIntent(); pid = intent.getStringExtra("pid");
四,在重写的方法里设置值
@Override public void successTwo(TwoBean twoBean) { String images = twoBean.getData().getImages(); String[] split = images.split("\\|"); Glide.with(this).load(split[0]).into(newXiangQing_imageview); //画那条作废线 /*TextPaint paint = mTvBargainPrice.getPaint(); paint.setFlags(Paint.STRIKE_THRU_TEXT_FLAG);*/ newXiangQing_price.setText("原价:" + twoBean.getData().getPrice()); newXiangQing_title.setText(twoBean.getData().getTitle()); }
五,具体代码实现
1,m层
public class TwoModel { //提供对应的上拉下拉方法 //up为true就是下拉刷新,为false就是上拉加载 public void show(String pid, final TwoModelCallBack twoModelCallBack) { //拿封装好的网络请求数据,第一个参数map类型,不需要,第二个,请求路劲,第三个回调,泛型是你的bean指定类型 OkhttpUtils.getInstance().asy(null, "http://120.27.23.105/product/getProductDetail?pid="+pid+"&source=android", new AbstractUiCallBack<TwoBean>() { @Override public void success(TwoBean twoBean) { //成功就调到数据了,然后要回调到presenter里 twoModelCallBack.successTwo(twoBean); } @Override public void failure(Exception e) { twoModelCallBack.failureTwo(e); } }); } //创建回调接口 public interface TwoModelCallBack { public void successTwo(TwoBean twoBean); public void failureTwo(Exception e); } }
2,V层
public interface TwoView { //数据成功回调的方法,需要数据参数 public void successTwo(TwoBean twoBean); //失败,封装的接口(okhttp)里回调一个Exception public void fasleTwo(Exception e); }
3,P层
public class TwoPresenter { //实例model TwoModel twoModel; //实例view TwoView twoView; //构造方法 public TwoPresenter(TwoView twoView) { //view接口传过来他就持有MainActivityView,然后定义出来,构造 this.twoView = twoView; this.twoModel = new TwoModel(); } //获取数据的方法,上拉刷新和下拉加载 public void getData(String pid) { twoModel.show(pid, new TwoModel.TwoModelCallBack() { @Override public void successTwo(TwoBean twoBean) { //通过view的接口往回调 twoView.successTwo(twoBean); } @Override public void failureTwo(Exception e) { twoView.fasleTwo(e); } }); } }
4,activity
public class SecendActivity extends AppCompatActivity implements TwoView,AddView{ private ImageView newXiangQing_imageview; private TextView newXiangQing_title; private TextView newXiangQing_price; private Button butn_addcar; private Button butn_car; private TwoPresenter presenter; private AddPresenter addPresenter; private String pid; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_secend); //找到控件 newXiangQing_imageview = findViewById(R.id.newXiangQing_imageview); newXiangQing_title = findViewById(R.id.newXiangQing_title); newXiangQing_price = findViewById(R.id.newXiangQing_price); butn_addcar = findViewById(R.id.butn_addcar); butn_car = findViewById(R.id.butn_car); // 接收上边传过来的值 Intent intent = getIntent(); pid = intent.getStringExtra("pid"); //实例化P层 presenter = new TwoPresenter(this); presenter.getData(pid); addPresenter = new AddPresenter(this); //购物车点击跳转 butn_car.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intentCar = new Intent(SecendActivity.this,ShopCarActivity.class); startActivity(intentCar); } }); //设置按钮的点击事件 butn_addcar.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Toast.makeText(SecendActivity.this, "添加成功", Toast.LENGTH_SHORT).show(); } }); } @Override public void successTwo(TwoBean twoBean) { String images = twoBean.getData().getImages(); String[] split = images.split("\\|"); Glide.with(this).load(split[0]).into(newXiangQing_imageview); //画那条作废线 /*TextPaint paint = mTvBargainPrice.getPaint(); paint.setFlags(Paint.STRIKE_THRU_TEXT_FLAG);*/ newXiangQing_price.setText("原价:" + twoBean.getData().getPrice()); newXiangQing_title.setText(twoBean.getData().getTitle()); } @Override public void fasleTwo(Exception e) { } @Override public void successAdd(final AddBean addBean) { addPresenter.getData(addBean.getCode(),addBean.getMsg()); } @Override public void fasleAdd(Exception e) { } }
5,布局
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <ImageView android:id="@+id/newXiangQing_imageview" android:layout_marginTop="10dp" android:layout_gravity="center_horizontal" android:layout_width="300dp" android:layout_height="300dp" android:src="@mipmap/ic_launcher"/> <TextView android:layout_gravity="center_horizontal" android:id="@+id/newXiangQing_title" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="XXXXXXXXXX"/> <TextView android:layout_gravity="center_horizontal" android:id="@+id/newXiangQing_price" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dp" android:text="XXXXXXXXXX"/> <RelativeLayout android:layout_alignParentBottom="true" android:layout_width="match_parent" android:layout_height="wrap_content"> </RelativeLayout> <Button android:id="@+id/butn_addcar" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_alignLeft="@+id/newXiangQing_butn_car" android:text="添加购物车" /> <Button android:id="@+id/butn_car" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="购物车" /> </LinearLayout>