2011-05-12 42 views
0

所以我在活動中一個TextView變量聲明如如何將TextView設置爲onClick的情況? Android的

TextView t; 

活動實現了一個OnClickListener因此它具有功能

public void onClick(View v){ 
    //switch (v.getId()) { 
    //case:....... 
} 

我知道你可以在使用R.id.itemID switch語句來告訴一些項目的onClick做一些事情,但是,在我的情況:

1)我使用的是textswitcher與viewswitcher.viewfactory

2)由於上述原因,在我的主要XML佈局,我使用

<TextSwitcher> without a surrounding 
<TextView> so the only id I have is the textswitcher 

所以做一些事情,當我點擊TextView的我做

的文本
t.setOnClickListener(this) 

然而,我不知道要在switch語句中設置case,所以我只使用了default,這當然會導致一些大問題,如果我將其他視圖和東西設置給偵聽器。

那麼有沒有另一種方法來設置沒有XML標識的textview onclicklistner或有辦法找出textview的ID?

謝謝!

回答

1

你可以做t.setTag(「yourTag」)(參見http://developer.android.com/reference/android/view/View.html#setTag(java.lang.Object),然後在if語句中執行v.getTag而不是switch語句,因爲它將是一個字符串。

或替代,我想你可以在你的資源(見http://developer.android.com/guide/topics/resources/more-resources.html#Id「),然後使用setTag(INT鍵,標籤)http://developer.android.com/reference/android/view/View.html#setTag(int,java.lang.Object中)

我大部分看過的人定義一個唯一的ID只需設置一個標記,然後引用更高版本。

+0

酷,我試過setTag的東西,它工作得很好,只是想知道,但這是否是最有效的方式呢? – Derek 2011-05-12 02:40:46

0

好吧,即使你使用的是ViewSwitcher,沒有理由爲什麼你不能設置一個ID在XML文件中的TextView。

然而,如果你堅持不在xml中設置id,那麼你可以這樣做:

ViewSwitcher vs = (ViewSwitcher)findViewById(R.id.viewswitcherid); 
for(int i=0;i<vs.getChildCount();i++){ 
    if(TextView.class.isInstance(vs.getChildAt(i))){ 
    vs.getChildAt(i).setId(R.id.textviewid); 
    break; 
    } 
} 

並且您將在您的switch語句中使用一個id。

相關問題