2011-05-12 31 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。

相关问题