Android 多个include标签的监听事件处理

  include标签的作用是为了xml文件代码的模块化,详细不再多提。主要是说说include标签的监听。

  网上也有很多例子,不过大多是只写了一个include标签的监听,如果需要实现多个include标签的监听怎么做呢?我至少是没在百度搜出来,经过不断的尝试,修改,终于找到了方法,现在分享给大家,希望对大家有帮助。

  先介绍一点,就是include标签本身是不能设置监听的,不论是android:onClick 或者 是对 include 绑定监听器setOnClickListener,都不起作用(我的实验结果是这样,具体的没有查文档)。不论一个界面有多少个include,android系统只是对include标签里面的子标签监听,但由于子标签只有一个,所以无法区分监听结果,其实解决办法也很简单,只需要单独对include标签的每个子标签重新设置 id 即可。下面是代码:

需要复写的xml文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:orientation="vertical" >

    <TextView
        android:id="@+id/sub_tv"
        android:layout_width="fill_parent"
        android:layout_height="45dp"
        android:clickable="true"
        android:onClick="onClick"
        android:background="#008800"
        android:layout_marginTop="10dp"
        android:gravity="center_vertical"
        android:paddingLeft="10dp"
        android:paddingRight="10dp"
        android:text="测试"
        android:textSize="17sp"
        android:textColor="#ffffff" />

</LinearLayout>

布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <include
        android:id="@+id/item1"
        layout="@layout/sub_my_resume_item" />

    <include
        android:id="@+id/item2"
        layout="@layout/sub_my_resume_item" />

    <include
        android:id="@+id/item3"
        layout="@layout/sub_my_resume_item" />

    <include
        android:id="@+id/item4"
        layout="@layout/sub_my_resume_item" />

</LinearLayout>

代码:

package com.example.testincludeonclick;

import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends ActionBarActivity {

    private int[] id = { R.id.item1, R.id.item2, R.id.item3, R.id.item4 };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        for (int i = 0; i < id.length; i++) {
            View v = findViewById(id[i]);
            TextView tv = (TextView) v.findViewById(R.id.sub_tv);
            tv.setId(i);
            tv.setText("测试 " + (i + 1));
        }
    }

    public void onClick(View v) {
        System.out.println("sub_id: " + v.getId());

        switch (v.getId()) {
        case 0:
            Toast.makeText(getApplicationContext(), "测试1", 1).show();
            break;
        case 1:
            Toast.makeText(getApplicationContext(), "测试2", 1).show();
            break;
        case 2:
            Toast.makeText(getApplicationContext(), "测试3", 1).show();
            break;
        case 3:
            Toast.makeText(getApplicationContext(), "测试4", 1).show();
            break;

        default:
            break;
        }
    }

}

运行结果:

时间: 2024-10-29 23:16:54

Android 多个include标签的监听事件处理的相关文章

Android 开发事件响应之基于监听的事件响应

Android 开发事件响应之基于监听的事件响应 本文将介绍Android 操作系统如何通过监听来实现对事件的响应. Android 开发事件响应之基于监听的事件响应 背景介绍 Android 开发事件响应类型 内部类 匿名内部类 外部类 直接绑定标签 总结 背景介绍 对于任何可视化开发来说,都会涉及到对控件的响应.我们通过举例:实现对Button 按钮的点击来讲解Android 里面对事件相应的办法. Android 开发事件响应类型 在Android 开发中,有两种方式可以对事件作出响应,分

Android基础入门教程——3.5 监听EditText的内容变化

Android基础入门教程--3.5 监听EditText的内容变化 标签(空格分隔): Android基础入门教程 本节引言: 在前面我们已经学过EditText控件了,本节来说下如何监听输入框的内容变化! 这个再实际开发中非常实用,另外,附带着说下如何实现EditText的密码可见 与不可见!好了,开始本节内容! 1.监听EditText的内容变化 由题可知,是基于监听的事件处理机制,好像前面的点击事件是OnClickListener,文本内容 变化的监听器则是:TextWatcher,我们

Android中Button的五种监听事件

简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activity本身作为事件监听器,实现onClickListener5.外部类作为监听器 ButtonListenerActivity.class public class ButtonListenerActivity extends AppCompatActivity implements View.On

Android中Preference的使用以及监听事件分析

> 在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有例外,FMRadio应用程序中则使用了View布局结构(可能是该应用程序是marvel公司提供的,如果由google公司做,那可说不准).归根到底,Preference布局结构和View的布局结构本质上还是大同小异,Preference的优点在于布局界面的可控性和高效率以及可存储值的简洁性(每个

Android开发之使用BroadcastReceiver实时监听电量(源代码分享)

Android系统中实时的监听手机电量以及开机启动功能都是通过BroadcastReceiver组件实现的.我们可以动态注册这个类的一个实例通过Context.registerReceiver()方法或者静态注册,通过<Receiver>标记在androidmanifest . xml.注意:如果我们注册一个接收器在Activity.onResume()实现,我们应该注销Activity在Activity生命周期的onPause方法中.(这将减少不必要的系统开销).切记不能注销Activity

(七)android开发中两种方式监听短信的原理和实现

一.监听短信的两种方式的简介 Android程序开发中,有两种方式监听短信内容:一.接收系统的短信广播:二.应用观察者模式,监听短信数据库. 第一种方式接收系统的短信广播: A.这种方式只对新收到的短消息有效,运行代码,并不会读取收件箱中已读或未读的消息,只有当收到新来的短消息时,才会执行onReceive()方法. B.并且这个广播是有序广播,如果当别的程序先读取到了这个广播,然后拦截掉了个这个广播,你将接收不到.当然我们可以通过设置priority的数值,其实有时是不管用的,现在在一些定制的

input标签的监听事件

监听事件的触发是完成交互的一个重要组成部分,现将input标签的监听事件整理如下. onfocus         当input 获取到焦点时触发. onblur            当input失去以获取到焦点时触发. 1.1  onchange      当input失去焦点并且它的value值发生变化时触发. 1.2  onpropertychange    只要当前对象属性发生改变,都会触发事件,IE专属(6.7.8). onkeydown   在 input中有键按住的时候触发事件.

Android 向Application对象添加Activity监听

可以建立对象把Application.ActivityLifecycleCallbacks接口中的函数实现,并利用public void registerActivityLifecycleCallbacks (Application.ActivityLifecycleCallbacks callback)函数向application添加代理对象. 比如以下代码,在本程序的全部activity的resume时都会调用. @Override public void onActivityResumed

多种监听事件处理方法

5种监听事件处理方法对比总结 1).通过设置UI组件的android:onClick属性,然后代码实现方法:此方法业务逻辑和UI耦合性太高,实际业务一般不用 2).匿名类:一般只应用特定组件的特定业务响应 3).内部类.4).外部类:可作为多个UI共同的事件处理,适用多个UI组件复用:当事件源要传递信息给事件监听器时则不太灵活,必须通过成员变量及构造方法 5).Activity自身类:处理比较灵活,实际中用的最多 6).当同一个UI对同一个事件注册多个监听器时,根据注册的顺序,最后注册的事件监听