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;
}
} }

运行结果:

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

  1. Android中Button的五种监听事件

    简单聊一下Android中Button的五种监听事件: 1.在布局文件中为button添加onClick属性,Activity实现其方法2.匿名内部类作为事件监听器类3.内部类作为监听器4.Activ ...

  2. DownEditTextView【自定义Edittext对Android 软键盘向下的监听】

    版权声明:本文为HaiyuKing原创文章,转载请注明出处! 前言 记录自定义EditText控件实现监听软键盘隐藏事件的功能.基本上和参考资料相同. 效果图    代码分析 自定义EditText子 ...

  3. [Android]Fragment自定义动画、动画监听以及兼容性包使用

    Fragment是Android在API 11之后加入的一个组件,对提高Android开发中的布局合理性和布局效率都有很大作用,尤其是在Android平板等大屏幕设备的开发中,Fragment的引入能 ...

  4. 【Android】[转] Android屏幕旋转使用OrientationEventListener的监听

    说明 遇到一个奇葩的问题,我在使用onConfigChanged拦截屏幕的横竖屏旋转时,发现直接进行180度的横屏/竖屏转换居然没有反应!查找原因发现仅对landscape或者portrait状态有用 ...

  5. Android应用中返回键的监听及处理

    MainActivity: package com.testnbackpressed;  import android.os.Bundle;  import android.view.KeyEvent ...

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

    在Android系统源码中,绝大多数应用程序的UI布局采用了Preference的布局结构,而不是我们平时在模拟器中构建应用程序时使用的View布局结构,例如,Setting模块中布局.当然,凡事都有 ...

  7. Android之EditText文本变化的监听

    监听EditText的文本变化需要给EditText控件加一个addTextChangeListener监听器 editText.addTextChangeListener(textWatcher); ...

  8. input 标签的监听事件总结

    最近在写一个手机端提交表单的项目,里面用了不少input标签,因为项目不太忙,所以,想做的完美点,但是遇到了一些问题,比如:页面中的必填项如果有至少一项为空,提交按钮就是不能提交的状态,所以需要对所有 ...

  9. Android 用Activity的onTouchEvent来监听滑动手势

    package com.example.activityOnTouchEvent; import android.app.Activity; import android.os.Bundle; imp ...

随机推荐

  1. android 内存问题

    借鉴:大苞米的博客(http://blog.csdn.net/a396901990) 一.内存溢出(OOM--out of memory) (1)内存溢出引发的问题展现: 1.程序卡顿,响应速度慢(内 ...

  2. [原创]迈出NIOS的第一步,HelloNIOS

    Altera官方推出NIOS已经很久了,个人感觉C+V代码配合会是后面FPGA使用的一个主流,由C来完成一些对时序要求不高,对功能要求偏高的部分,比如运动控制等:由V来配合时序完成高时序要求的需求以及 ...

  3. Mac 终端命令大全

    目录操作 命令名 功能描述 使用举例 mkdir 创建一个目录 mkdir dirname rmdir 删除一个目录 rmdir dirname mvdir 移动或重命名一个目录 mvdir dir1 ...

  4. js获取get方式传递的参数

    String.prototype.GetValue= function(parm) { var reg = new RegExp("(^|&)"+ parm +" ...

  5. 利用matlab摄像机标定

    (1)输入图像 "Image names"键 Matlab的图形窗口显示出20幅靶标图像 (2) 提取角点 "Extract grid corners"键. 输 ...

  6. 冒泡排序和用for循环画菱形

    忘了当时刚开始学java编程时提到的冒泡排序和for循环画菱形怎么做了, 找了找以前的练习, 重新修改了一遍, 其实冒泡排序也是可以排列字符串和字符的, package com.test; publi ...

  7. 关于for循环删除数组内容出现的问题

    昨天用for循环进行数组去重的时候出现的问题, 首先,用双重for循环把前一个和所有后面的元素进行比较,如果相等则删除. 但是,如果数组里面有三个以上连续相等的元素的时候,就会出现问题. var ar ...

  8. liunx打开指定端口

    1.切换为root用户 2.切换路径至:/etc/sysconfig 3.vi编辑添加一行: -A INPUT -m state --state NEW -m tcp -p tcp --dport 3 ...

  9. android 使用LinearGradient进行字体渐变的效果

    有这么一种效果,一串字符有一束白光从字体上面闪光的效果.如下图显示: 就像上面的显示效果一样一束白光闪过,这种效果主要还是使用了LinearGradient类来进行的 LinearGradient也称 ...

  10. Nginx配置proxy_pass

    nginx配置proxy_pass,需要注意转发的路径配置 1.location /test/ { proxy_pass http://t6:8300; } 2.location /test/ { p ...