[英]How to set setOnClickListener to TextView that has been added programmatically?
我花了將近2天的時間來解決這個問題。 我也搜索了其他類似的問題,但仍然找不到解決這個問題的方法。 真的很感謝幫助。
@Override
public void addField() {
if (countTv < 7) {
allTextView[countTv] = new TextView(this);
allTextView[countTv].setId(countTv);
button = new Button(this);
linearLayout = new LinearLayout(this);
linearLayout.setOrientation(LinearLayout.VERTICAL);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
layoutParams.setMargins(0, 50, 0, 0);
button = findViewById(R.id.bt_new_field);
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
final View rowView = inflater.inflate(R.layout.search_field, null);
allTextView[countTv].setOnClickListener(listener);
llParentField.addView(rowView, layoutParams);
}
countTv++;
}
View.OnClickListener listener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case 0:
tag = v.getId();
toSearchActivity();
break;
case 1:
tag = v.getId();
toSearchActivity();
break;
case 2:
tag = v.getId();
toSearchActivity();
break;
case 3:
tag = v.getId();
toSearchActivity();
break;
case 4:
tag = v.getId();
toSearchActivity();
break;
case 5:
tag = v.getId();
toSearchActivity();
break;
case 6:
tag = v.getId();
toSearchActivity();
break;
}
}
};
注意:我已經嘗試了如何實現 View.OnClickListener 的所有可能方法,但仍然無法單擊新添加的 TextView。 忘記我代碼中的按鈕,這並不重要。 非常感謝你的幫助!
對於每個視圖組件,我們可以像 TextView 一樣調用 setOnclickLister()。
你可以這樣寫:
allTextView[countTv].setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
// Code here executes on main thread after user presses button
}
});
你可以用
textGreen[i].setOnClickListener(ClickListener);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.