如何将setOnClickListener设置为以编程方式添加的TextView?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何将setOnClickListener设置为以编程方式添加的TextView?相关的知识,希望对你有一定的参考价值。
我花了差不多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那样调用setOnclickListener()。
你可以这样写:
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);
以上是关于如何将setOnClickListener设置为以编程方式添加的TextView?的主要内容,如果未能解决你的问题,请参考以下文章
WiX ServiceInstall - 将服务设置为以当前 Windows 用户身份运行