1,定义一个接口
我们创建一个接口类:
public interface OnPriceClickListener { //通知activtiy更新数据 void onChangeData(); }
2,我们是要在adapter点击的时候调用接口,触发activity中的事件
那么我们在activity中实现这个接口,并实现它的方法
public class ShopCarActivity extends AppCompatActivity implements View.OnClickListener, OnPriceClickListener {
实现它的方法
@Override public void onChangeData() { //重新请求数据库计算价格 List<Goods> all = DataSupport.findAll(Goods.class); double prices = 0.00; if (all != null && all.size() > 0) { for (Goods goods : all) { prices += goods.getCount() * goods.getNewPrice(); } } tv_showprice.setText("合计:¥" + Tools.MoneyWith2point(prices)); }
3,在adapter中怎么调用呢?
在adapter中声明接口,并在构造方法中进行接口实现。
public class MyAadapter_Goods extends BaseAdapter { private OnPriceClickListener onPriceClickListener; public MyAadapter_Goods(OnPriceClickListener listener) { this.onPriceClickListener = listener; }
如何调用呢?在你需要的地方直接调用它的方法:
holder_goods.tv_price.setText("¥" + Tools.MoneyWith2point(mycount * g.getNewPrice())); if (onPriceClickListener != null) { onPriceClickListener.onChangeData(); } } }); holder_goods.btn_jian.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) {
4,那adapter中的构造方法是怎么传入呢?
其实很简单:
因为我们的activity已经实现了接口,所有:
aadapter_goods = new MyAadapter_Goods(this); shopcar_listview.setAdapter(aadapter_goods);
直接传入this即可;
//-------end------