怎样给listview的item中的子控件设置监听及时时刷新

       listView现在应该还受到众多的程序员青睐,虽然android5.0以后已经新出了recyclerView,功能更加强大,但是listView已经被开发的特别成熟,而recyclerView却很少能获取到公司的青睐(可能很多人还不知道这个控件)。本文就从listView子控件的设置监听和时时更新出发,教大家如何进行操作。

一、要达到的效果:


当点击加减号时,需要中间显示数字的文本随之发生改变。

二、主要步骤:

       该效果的主要实现有一个难点,就是当你点击某一个item的加减号的时候,系统是如何知道哪一个文本地数字需要更新呢?因为每一个item的每一个控件的id都是一样的,对吧。这样就需要一个变量来区别开每一个item的控件了。adapter中的部分代码如下:

怎样给listview的item中的子控件设置监听及时时刷新_第1张图片

这边是adapter中的一部分代码,和以往不同的是,当你对adapter进行new的时候,需要再将listView传递过去,下文中对文本地区分需要用到,是特别重要的一点。

继续往下看代码:

怎样给listview的item中的子控件设置监听及时时刷新_第2张图片

这里是adapter中的getView方法的重写,不相关的代码我已经注释掉了,大家只需要看未被注释的代码即可。74行的代码大家注意一下,这一行主要是对每一个不同的item中的显示数字的文本,通过setTag并将自身的position进行封装来达到区分的。在下文中会通过listview的方法来进行提取,那么如何区分呢?77行和78行大家注意一下是针对加减号的一个监听设置,这边是通过一个内部类InnerCartListener继承OnClickListener来进行监听设置。并且在new的时候需要传递一个参数position来在内部监听类中,这个position是不是就直接传递给了InnerCartListener了呢?通过这个传递过去的position就可以进行区分了呗!不多说,看下面的代码:

怎样给listview的item中的子控件设置监听及时时刷新_第3张图片

上面的代码就是adapter中的继承View.OnClickListener的全部代码,也是区分item子控件的重点代码了。类的内部设置了一个参数的构造方法,通过每一个加减号建立监听来传递过来position,然后对监听类的position赋值。当点击加减号时,通过listView的findViewWithTag方法以及position来提取到textview。这边注意在getView方法中是通过setTag方法来进行封装的,所以这边就需要通过listView的findViewWithTag()方法。提取出来的textView就可以通过点击iv_cart_add和iv_cart_sub来对textview的文本进行刷新了。

你可能感兴趣的