gpt4 book ai didi

java - android中每个 TextView 的单独事件监听器

转载 作者:行者123 更新时间:2023-11-30 09:53:18 25 4
gpt4 key购买 nike

我想将单独的事件监听器添加到动态创建的 TextView 列表中。到目前为止的代码是这样的:

while (cur.moveToNext()){
TextView tv = new TextView(this);
temp = cur.getString(cur.getColumnIndexOrThrow("_ID"));
result = "some text";
tv.setText(result);
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent myIntent = new Intent(v.getContext(), newsDetails.class);
myIntent.putExtra("id", temp);
startActivity(myIntent);
}
});
lOut.addView(tv);
}

但这行不通。单独的 TextView 以列表形式创建,但单独的事件监听器不起作用。

最佳答案

假设这是实际代码而不是伪代码,那么我同意 Aaron 的观点,即成员字段的使用可能是问题的根源。但是,我不同意该解决方案:您不应该使用字段。 (如果你必须将你的字段命名为“temp”,这是一个很好的提示,它应该是一个局部变量。)如果你创建一个“最终”局部变量,那么你知道它不会从你下面改变,并且该固定值将被锁定到您的匿名子类(即监听器)中。

代码变成如下:

while (cur.moveToNext()){
TextView tv = new TextView(this);
final String temp = cur.getString(cur.getColumnIndexOrThrow("_ID"));
final String result = "some text";
tv.setText(result);
tv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
Intent myIntent = new Intent(v.getContext(), newsDetails.class);
myIntent.putExtra("id", temp);
startActivity(myIntent);
}
});
lOut.addView(tv);
}

当然,您会希望去掉名为“temp”和“result”的字段,因为局部变量取而代之。

关于java - android中每个 TextView 的单独事件监听器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3900742/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com