美文网首页
接口的实现

接口的实现

作者: AddisonLi | 来源:发表于2016-12-21 17:25 被阅读18次

在同一个activity中,有时listView中的item的数据的改变会影响listView外的数据,之前总是傻傻的使用广播通知界面更改。最近看了下接口的使用。直接贴代码。

activity中代码

privateTextViewtv_result;

privateListViewlv_goods;

privateListlist=newArrayList<>();

privateContextcontext;

privateGoodsAdapteradapter;

@Override

protected voidonCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

lv_goods= (ListView) findViewById(R.id.lv_goods);

tv_result= (TextView) findViewById(R.id.tv_result);

context=this;

list.add(newGoodsBean("10","0"));

list.add(newGoodsBean("8","0"));

list.add(newGoodsBean("7","0"));

list.add(newGoodsBean("3","0"));

adapter=newGoodsAdapter(context,list);

adapter.setIOnPriceListener(newGoodsAdapter.IOnPriceListener() {

@Override

public voidupdatePrice(Integer price) {

tv_result.setText(price+"");

}

});

lv_goods.setAdapter(adapter);

}


adapter中代码

privateContextmContext;

privateListmlist;

private intmoney=0;

publicIOnPriceListenerlistener;

public voidsetIOnPriceListener(IOnPriceListener listener) {

this.listener= listener;

}

public interfaceIOnPriceListener {

voidupdatePrice(Integer price);

}

publicGoodsAdapter(Context context,List list) {

mContext= context;

mlist= list;

for(inti =0;i

money+= Integer.parseInt(mlist.get(i).getPrice()) * Integer.parseInt(mlist.get(i).getNum());

}

}

@Override

public intgetCount() {

returnmlist!=null?mlist.size() :0;

}

@Override

publicObjectgetItem(inti) {

return null;

}

@Override

public longgetItemId(inti) {

return0;

}

ViewHolderholder=null;

@Override

publicViewgetView(final inti,View view,ViewGroup viewGroup) {

if(view ==null) {

holder=newViewHolder();

view = LayoutInflater.from(mContext).inflate(R.layout.item_goods,viewGroup, false);

holder.tv_add= (TextView) view.findViewById(R.id.tv_add);

holder.tv_minus= (TextView) view.findViewById(R.id.tv_minus);

holder.tv_price= (TextView) view.findViewById(R.id.tv_price);

holder.tv_num= (TextView) view.findViewById(R.id.tv_num);

view.setTag(holder);

}else{

holder= (ViewHolder) view.getTag();

}

holder.tv_price.setText(mlist.get(i).getPrice());

holder.tv_num.setText(mlist.get(i).getNum());

holder.tv_add.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

intnum = Integer.parseInt(mlist.get(i).getNum());

num++;

mlist.get(i).setNum(num +"");

holder.tv_num.setText(num +"");

money+= Integer.parseInt(mlist.get(i).getPrice());

notifyDataSetChanged();

if(listener!=null) {

listener.updatePrice(money);

}

}

});

holder.tv_minus.setOnClickListener(newView.OnClickListener() {

@Override

public voidonClick(View view) {

intnum = Integer.parseInt(mlist.get(i).getNum());

num--;

mlist.get(i).setNum(num +"");

holder.tv_num.setText(num +"");

notifyDataSetChanged();

money-= Integer.parseInt(mlist.get(i).getPrice());

if(listener!=null) {

listener.updatePrice(money);

}

}

});

returnview;

}

public classViewHolder {

publicTextViewtv_minus;

publicTextViewtv_add;

publicTextViewtv_price;

publicTextViewtv_num;

}

相关文章

  • 接口

    接口 必须知道的接口特性 接口不可以被实例化 实现类必须实现接口的所有方法 实现类可以实现多个接口 接口中的变量都...

  • Mybatis 实现DAO接口的两种方式

    Mybatis实现DAO接口 Mapper自动实现DAO接口API 编程方式实现DAO接口 :实现DAO 的api...

  • Golang学习笔记之5:接口

    接口的定义 接口由使用者定义 接口实现是隐士的 只要实现接口里的方法 接口不是简单的引用,他包含实现者类型和实现者...

  • golang-接口

    Go语言规定,只要实现了接口里面的方法,就是该接口的实现类 定义一个接口 接口实现1 接口实现 2 main方法

  • 手敲数据结构——LinkedList、LinkedListSet

    LinkedList实现 LinkedListSet实现 Set接口 LinkedListMap实现 Map接口

  • JDK静态代理示例代码

    JDK静态代理示例代码 业务接口 接口的实现类 代理类,实现接口,并扩展实现类的功能 1、业务接口 2、业务实现类...

  • Java多线程[集成thread, 实现Runnable, 实现

    一、 实现Runnable 接口,并实现该接口的 run() 方法。 通过实现Runnable接口的类,就是产生一...

  • 抽象和接口的不同

    接口只有定义, 欺负不能再接口中实现, 只有实现接口的类才能实现接口中定义的方法, 而抽象类可以定义和实现, 即其...

  • Java中3种代理总结

    1、JDK静态代理 业务接口 接口的实现类 代理类,实现接口,并扩展实现类的功能 2、JDK动态代理 业务接口 实...

  • HAP_hap调用rest接口

    接口: 实现接口:

网友评论

      本文标题:接口的实现

      本文链接:https://www.haomeiwen.com/subject/yoiqvttx.html