![](/img/trans.png)
[英]How to perform onclick action on multiple buttons created dynamically in Android Studio
[英]Android Studio TextViews onClick all perform the same action, how do I fix it?
我有這個功能,應該創建一個具有唯一ID的TextViews
數組。
每個TextView
應該執行唯一的操作,但是,當單擊其中任何一個時,它們都將執行最后一個TextView
的功能。
(即,他們中的任何人都以我設置的方式將9附加到最后一個TextView
上)您知道為什么這樣做以及如何解決它嗎?
任何幫助將不勝感激。
//Code:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_what_can_imake);
int textViewCount = 10;
TextView[] textViewArray = new TextView[textViewCount];
RelativeLayout myLayout = (RelativeLayout) findViewById(R.id.myLayout);
for(int i = 0; i < textViewCount; i++) {
textViewArray[i] = new TextView(this);
textViewArray[i].setText("Title"+Integer.toString(i));
textViewArray[i].setPadding(8,8+50*i,8,0);
textViewArray[i].setId(i);
LayoutParams myTitleDimensions = new RelativeLayout.LayoutParams(
LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
textViewArray[i].setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
int myId = v.getId();
((TextView) v).append(Integer.toString(myId));
}
});
myLayout.addView(textViewArray[i],myTitleDimensions);
}
}
您正在使用其他paddingTop
垂直布置TextView
:
textViewArray[i].setPadding(8,8+50*i,8,0);
這使TextView
在視覺上彼此分離,但是實際上它們都是重疊的,第二個重疊了第一個,第三個重疊了第二個,依此類推。最后,第9個重疊了所有,所以無論您使用哪種文本單擊,您實際上單擊了第九個。
要解決此問題,您應該更改TextView
的布局方式。
例如,使用RelativeLayout.addRule(int verb, int anchor)
:
RelativeLayout.LayoutParams myTitleDimensions = new RelativeLayout.LayoutParams(
RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
if (i > 0) {
myTitleDimensions.addRule(RelativeLayout.BELOW, i - 1);
}
順便說一句, 0
不是有效的ID,因此您的第一個TextView
仍將與第二個TextView
重疊,只需稍微更改生成ID的方式即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.