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. Linux下调试程序方法

    您可以用各种方法来监控运行着的用户空间程序:可以为其运行调试器并单步调试该程序,添加打印语句,或者添加工具来分析程序.本文描述了几种可以用来调试在 Linux 上运行的程序的方法.我们将回顾四种调试问 ...

  2. asp.net 页面如何将Eval中的时间显示为“yyyy-MM-dd ” 格式

    <table> <tr>    <td style="width:273px;color:#105db5;" valign="top&quo ...

  3. Android View的onTouchEvent和OnTouch区别

    还是以自定义的TestButton为例. 我们可以通过重写onTouchEvent方法来处理诸如down move up的消息: public class TestButton extends But ...

  4. Object.create()方法的低版本兼容问题

    Object.prototype.create=(function(){ if(Object.prototype.create){return Object.prototype.create}else ...

  5. Python切片

    切片是啥, 可以吃么 切片肿么用哈 辣么长,记不住 切片是啥, 可以吃么 嘛,所谓切片故名思意就有选取的意思啦, 跟java里面的subString()意思差不多, 从原始的字符串中按规则提取出新的字 ...

  6. linux挂载数据盘

    http://jingyan.baidu.com/article/90808022d2e9a3fd91c80fe9.html

  7. MongoDB基本命令用

    成功启动MongoDB后,再打开一个命令行窗口输入mongo,就可以进行数据库的一些操作. 输入help可以看到基本操作命令: show dbs:显示数据库列表  show collections:显 ...

  8. Java编程中“为了性能”尽量要做到的一些地方

    最近的机器内存又爆满了,除了新增机器内存外,还应该好好review一下我们的代码,有很多代码编写过于随意化,这些不好的习惯或对程序语言的不了解是应该好好打压打压了. 下面是参考网络资源总结的一些在Ja ...

  9. WebView 上传文件 WebChromeClient之openFileChooser函数

    原链接:http://blog.saymagic.cn/2015/11/08/webview-upload.html?utm_source=tuicool&utm_medium=referra ...

  10. thinkphp3.2.3批量执行sql语句(带事务)

    /** * 事务封装方法 * @access public 将此方法放入框架model.class.php中 * @param array $sqls 要执行的sql数组或语句 * @param ar ...