View绑定式监听器实现原理

在我们开发android的时候,会经常重写自定义的View去满足一些需求

然后有时候view会提供一些回调,比如view某个部分被点击了,我们需要通知使用者然后再通过接口传一些参数过去。

对于我之前的做法是使用者就是某个用它的类去实现 implements 这个接口,然后当view被点击的时候就会传数据给这个接口

但是如果某个类使用了这个view你就得implements一个接口,然后如果需要继承的接口过多的话这个类实现的接口会变得很难管理

就比如前一篇文章写的仿网易云音乐的例子来说吧

我们给她绑定一个监听器

这个是那个回调(也就是那个需要绑定的监听器),Dialog里包含一个listview ,绑定监听器之后将list的item位置传给使用者(就是调用的地方)

public interface DialogListClickCallBack {
    void itemClick(int position);
}

我的Dialog内部怎么实现呢?

  private DialogListClickCallBack mListener;   //声明这个监听回调

  //加入set监听器函数 ,将监听器与自身的回调绑定
  public void setOnclickListener(DialogListClickCallBack l){
        mListener = l;
    }

    使用的位置,调用监听接口的接口内方法,并将位置参数传出
   mListener.itemClick(position);

然后再使用的地方直接使用就可以了

myDialog.setOnclickListener(new DialogListClickCallBack() {
                    @Override
                    public void itemClick(int position) {
                        System.out.println("!!!position = "+position);

                    }
                });

完成!

时间: 2024-10-23 21:56:52

View绑定式监听器实现原理的相关文章

Android:Service的非绑定式的创建和生命周期

Android的Service若使用非绑定式的创建,则创建后将无法再与它取得联系,即无法传递消息参数等: 所以如果希望创建后仍然与其存在联系,那么可以参考我的前几篇博客<Android:Service的绑定和解绑定,Service与Activity通信>,其中讲到了Service的绑定和与Activity通信的相关内容(如题目o(^▽^)o). Service的非绑定式的创建非常的简单,和启动Activity差不多. 只需要调用startService()即可创建:而调用stopSercice

新疆袋式除尘器工作原理介绍

新疆袋式除尘器介绍     新疆袋式除尘器依靠离心风机的负压把钢铁.冶金.化工.建材.有色金属.锅炉燃烧和生产制造中产生的扬尘和烟气,通过吸风管道引入袋式除尘器中,当高流速运行的烟气和扬尘,进入袋式除尘器箱体后,流通面积瞬间变大,流速瞬间降低,扬尘与烟气中含有的大颗粒粉尘,在自身重量的作用下慢慢降落到下方灰斗或仓低部,而烟气和扬尘没有降落的比重轻.颗粒小的粉尘,伴随着气体通过布袋由外向内进行过滤,粉尘被阻留在滤袋纤维层的外部,干净的气体在则透过布袋在负压作用下上升到净化室的箱体中,排放达标净化气

DOS拒绝式服务攻击原理浅析

作者:zhanhailiang 日期:2014-10-26 TCP三次握手协议 TCP协议是一种可靠的连接,为了保证连接的可靠性,TCP的连接要分为几个步骤.我们把这个连接过程称为"三次握手". 下面我们从一个实例来分析建立连接的过程. 第一步客户端向服务器发送一个TCP数据包,表示请求建立连接.为此,客户端将数据包的SYN位设置为1,并且设置序列号seq=1000(假设为1000). 第二步服务器收到了数据包,并从SYN位为1知道这是一个建立请求的连接.于是服务器也向客户端发送一个T

WPF ViewModel与多个View绑定后如何解决的问题

原文:WPF ViewModel与多个View绑定后如何解决的问题 当重复创建View并绑定同一个ViewModel后,ViewModel中的字段更新,在新的View中的没有反应或者在View中找不到相应的视觉树(如ListBox的ListBoxItem) 初始的解决方案:View关闭后,注销属性Unregister Dependency. 如果可以将属性注销,貌似是可行的 注销属性 RemoveDependency(LoadCousewareItemAnimationProperty); 1

JUC源码分析-集合篇(五)BlockingQueue 阻塞式队列实现原理

JUC源码分析-集合篇(五)BlockingQueue 阻塞式队列实现原理 以 LinkedBlockingQueue 分析 BlockingQueue 阻塞式队列的实现原理. 1. 数据结构 LinkedBlockingQueue 和 ConcurrentLinkedQueue 一样都是由 head 节点和 last 节点组成,每个节点(Node)由节点元素(item)和指向下一个节点(next)的引用组成,节点与节点之间就是通过这个 next 关联起来,从而组成一张链表结构的队列.默认情况下

活塞式压力计的原理及注意事项详细解析

活塞式压力计是根据流体静力学平衡原理和帕斯卡定律,利用压力作用在活塞上的力与砍码的重力相平衡的原理设计而成的.由于在平衡被测压力的负荷时,采用标准珐码产生的重力,因此又被称为静重活塞式压力计.其结构如图3-8所示,主要由压力发生部分和测量部分组成.活塞式压力计的原理及注意事项详细解析 活塞式压力计的原理及注意事项 (1)压力发生部分.压力发生部分主要指手摇泵.通过加压手轮旋转丝杆,推动工作活塞(手摇泵活塞)挤压工作液,将待测压力经工作液传给测量活塞.工作液一般采用洁净的变压器油或蓖麻油等. (2

基于不同设备下的响应式布局的原理

一.响应式开发 现在移动设备用户的增多,我们在PC端开发的页面不能完美的适配于移动端,那为了让移动端的用户拥有用好的体验效果,一般来说,我们会针对移动端来做一套特定的版本.而显然,技术是不断更新迭代的,这时候就出现了响应式开发,指的是同一页面在不同屏幕尺寸下有不同的布局,即用一套代码,来适配不同的设备. 二.响应式布局的原理 1.通过CSS中的媒体查询,即media queries,可以针对不同的媒体类型定义不同的样式. 语法:@media all and(min-width:??px)and(

java监听器的原理与实现

监听器模型涉及以下三个对象,模型图如下: (1)事件:用户对组件的一个操作,称之为一个事件 (2)事件源:发生事件的组件就是事件源 (3)事件监听器(处理器):监听并负责处理事件的方法 执行顺序如下: 1.给事件源注册监听器 2.组件接受外部作用,也就是事件被触发 3.组件产生一个相应的事件对象,并把此对象传递给与之关联的事件处理器 4.事件处理器启动,并执行相关的代码来处理该事件. 监听器模式:事件源注册监听器之后,当事件源触发事件,监听器就可以回调事件对象的方法:更形象地说,监听者模式是基于

PHP实现链式操作的原理

在一个类中有多个方法,当你实例化这个类,并调用方法时只能一个一个调用,类似: db.php <?php class db{ public function where() { //code here } public function order() { //code here } public function limit() { //code here }} index.php <?php $db = new db(); $db->where();$db->order();$d