2013-03-18 32 views
-4

我有一個動態產生的textviewssetonclicklistner動態生成textviews

for(int i = 0; i < blog_link_counter; i++) { 
textViewArray[i] = new TextView(this); 
textViewArray[i].setText(Html.fromHtml(array_blog_text[i]+"<br>")); 
textViewArray[i].setId(i); 
textViewArray[i].setOnClickListener(this); 
((LinearLayout) linearLayout).addView(textViewArray[i]); 
} 

的陣列現在我有一個活動,其中有許多textviews的陣列。我需要將onclick listner功能添加到所有textviews。

<LinearLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
android:layout_width="fill_parent" 
android:id="@+id/info" 
android:layout_height="fill_parent" 
android:orientation="vertical" 
android:background="#FFFFFF" /> 

我加在Java file.After說我實現了onclicklistner接口

public void onClick(View v) { 
    // TODO Auto-generated method stub 


switch(v.getId()) 
{ 
case R.id. <-- ? 
} 

}} 

我怎麼能匹配,以它已經指的哪的TextView的id onclicklistner?我的意思是如果id是靜態的,我可以像R.id.idfromxmlfile那樣做,但在這種情況下,我應該怎麼做?

請幫助

+1

爲什麼你重複問題檢索看法?您之前從其他帳戶發佈問題。 – 2013-03-18 16:05:07

+1

你問這個問題33分鐘前(我已經回答了它http://stackoverflow.com/questions/15480653/android-setonclicklistner-to-dynamically-generated-array-of-textviews/15480703#15480703) – poitroae 2013-03-18 16:05:58

回答

2

你不使用R.id.xxx,只需使用您在循環用同一個號碼:

switch(v.getId()) 
{ 
case 0: 
case 1: 
//etc 
} 
0

的View.setTag()函數是比較合適的爲了這。設置標籤,而不是設置id

// Use .setTag 
textViewArray[i].setTag(new Integer(i)); 

比,你可以通過調用.getTag()

Integer tag = (Integer) v.getTag(); 
switch(tag) 
{ 
case 0: 
case ...: 
case blog_link_counter - 1: 
} 
+0

嗯,怎麼樣這更合適嗎?它完全一樣,除了濫用標籤功能。 – 2013-03-18 16:10:30