Android中自定义veiw使用Java中的回调方法

//------------------MainActivity----中----------------------------------

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

private MyButton myButton;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //找到控件
        myButton = (MyButton) findViewById(R.id.bt_mybutton);
        myButton.setonButtonClickListener(new OnButtonClickListener() {
            
            @Override
            public void OnButtonClick() {
            Toast.makeText(MainActivity.this, "在Activity中点击了Button", 0).show();
                
            }
        });
        
    }

//---------------------布局文件中-----自定义button--------------

<com.bw.huidiao.MyButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/bt_mybutton"
        android:text="点击回调"/>

//------------------自定义button  -  创建一个类继承button实现3个又参构造方法----------------------------------------

package com.bw.huidiao;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.Button;
import android.widget.Toast;
import android.view.View;
import android.view.View.OnClickListener;

public class MyButton extends Button implements OnClickListener{
    private Context context;

public MyButton(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        // TODO Auto-generated constructor stub
    }
    public MyButton(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

public MyButton(Context context, AttributeSet attrs) {
        super(context, attrs);
        this.context=context;
        setOnClickListener(this);
        
    }
    @Override
    public void onClick(View v) {
        //Toast.makeText(context, "在MyButton中点击了Button", 0).show();
        listener.OnButtonClick();
    }
    private OnButtonClickListener listener;
    //接口回调
    //定义接口
    public interface OnButtonClickListener{
        public void OnButtonClick();
    }
    //暴露给外界一个方法,方便调用
public void setonButtonClickListener(OnButtonClickListener listener){
    this.listener=listener;
}

}

时间: 2024-08-04 00:48:03

Android中自定义veiw使用Java中的回调方法的相关文章

hadoop中Text类 与 java中String类的区别

hadoop 中 的Text类与java中的String类感觉上用法是相似的,但两者在编码格式和访问方式上还是有些差别的,要说明这个问题,首先得了解几个概念: 字符集: 是一个系统支持的所有抽象字符的集合.字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.例如 unicode就是一个字符集,它的目标是涵盖世界上所有国家的文字和符号: 字符编码:是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对.即在符号集

C中的无符号整数在java中的处理

C中的无符号整数在java中的处理 * 因为java中整数都是有符号的,这意味着java中的整数比C中的无符号整数少一位有效数字, * 比如:32768用C无符号整数int16表示是正常的,但用java short(占两个字节)表示则变成了负数 * 所以在java中应该找有效数字位数更大的类型来表示 * 比如:无符号int16在取到2个字节之后应该用int表示 * 无符号int32在取到4个字节之后应该用long来表示 * C中的有符号整数在java可以正常处理 public class Sho

【Java】Java中的Collections类——Java中升级版的数据结构【转】

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*;   一.动态.有序.可变大小的一维数组Vector与ArrayList Collecti

OC中的@interface和java中的区别以及 @implementation @protocol

java 在java中的interface是‘接口’的意思,而java的类声明用class,即接口用interface声明,类是用class声明,是两个独立的部分. 只有在类声明要实现某个接口时,他们两者才建立了关系,例如: [html] view plaincopyprint? interface AI{ void print(); }; class AC{ }; 这时候,AI和AC是独立存在,AC不会因为没有和AI建立关系而编译错误,将AC做以下修改后,AI才和AC建立了关系,AC必须实现A

【Java】Java中的Collections类——Java中升级版的数据结构

一般来说课本上的数据结构包括数组.单链表.堆栈.树.图.我这里所指的数据结构,是一个怎么表示一个对象的问题,有时候,单单一个变量声明不堪大用,比如int,String,double甚至一维数组.二维数组无法完全表达你要表达的东西,而定义一个类Class有太过麻烦,这时候,你可以考虑一下用Java中的Collections类.使用Collections类,必须在文件头声明import java.util.*; 一.动态.有序.可变大小的一维数组Vector与ArrayList Collection

C++学习笔记_02 C++中的const和Java中的final关键字的区别

(1)final在java中定义常量,可作用于基本类型或者类类型,若是作用于类类型,则此类类型不能作为父 类被继承,也就是说它的下面不能有子类,这样的类叫做原子类.    C++中的const定义常量 (2)Java中的final如果是对于基本类型,那和C++的const是一样的    但是如果是对对象而言,不同了     (3)final表示这个句柄是不可改变的    final Object obj=(Object)new String("a");    obj=(Object)n

自定义写实现java中map中的功能(简易)

package test;/** * 通过自定义来实现一个map功能 * 存放键值对,根据键对象找到一个值对象,确保没有重复 */ import java.util.Map; public class test01 { SxtEntry[] arr=new SxtEntry[990]; int size; //定义函数实现将键值对放入数组 public void put(Object key,Object value){ SxtEntry entry=new SxtEntry(key, valu

JPA中自定义的插入、更新、删除方法为什么要添加@Modifying注解和@Transactional注解?

前几天,有个同事在使用JPA的自定义SQL方法时,程序一直报异常,捣鼓了半天也没能解决,咨询我的时候,我看了一眼他的程序,差不多是这个样子的: 1 @Repository 2 public interface UserRepository extends JpaRepository<User,Long> { 3 4 @Query(value = "delete from pro_user where id = ?1",nativeQuery = true) 5 void d

Scala中集合类型与java中集合类型转换

以下为java.util.List  转为 scala 中 Seq的方法: 注意需要导入包 import collection.JavaConverters._ //根据topic获取partition信息 def getPartitionInfo(consumer: KafkaConsumer[_, _], topic: String): Seq[PartitionInfo] = { import collection.JavaConverters._ val partList: Seq[Pa