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

}

 運行結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM