gpt4 book ai didi

java - 在动态创建的元素上添加 onClick 监听器不起作用

转载 作者:行者123 更新时间:2023-11-30 10:18:56 26 4
gpt4 key购买 nike

我正在运行时创建动态 textview。添加 onClick() 监听器。它仅适用于运行时创建的最后一个 textview,而不适用于创建的每个 textview。这是我的代码:-

@Override
public void onComplete(@NonNull Task<Object> task) {
if (task.isComplete()) {
ArrayList<Document> tagLocat = (ArrayList<Document>) task.getResult();
tv=new TextView[tagLocat.size()];

for (i = 0; i < tagLocat.size(); i++) {
Document doc = tagLocat.get(i);
TextView tv1 = new TextView(MainActivity.this);
Log.i("Document", "" + doc);
notification = doc.getString("notification");
Log.i("Double", "" + notification);
LinearLayout.LayoutParams lparams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

lparams.setMargins(10,10,10,10);
tv1.setLayoutParams(lparams);
tv1.setTag(i);
tv1.setId(i);
tv1.setTextSize(30);
tv1.setPadding(50, 0 ,0,0);

tv1.setText(notification);
tv[i] = tv1;
linearLayout.addView(tv[i]);

tv[i].setBackgroundColor(Color.GRAY);

tv[i].setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
tv[i].setBackgroundColor(Color.LTGRAY);
}
});
}
} else {
Log.i("Exception",task.getException().toString());
}
}

最佳答案

你必须在设置onclicklistener后将你的textview添加到数组中

喜欢

                    tv1.setLayoutParams(lparams);
tv1.setTag(i);
tv1.setId(i);
tv1.setTextSize(30);
tv1.setPadding(50, 0 ,0,0);

tv1.setText(notification);

tv1.setBackgroundColor(Color.GRAY);

tv1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
v.setBackgroundColor(Color.LTGRAY);
}
});

tv[i] = tv1;
linearLayout.addView(tv[i]);

关于java - 在动态创建的元素上添加 onClick 监听器不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48981812/

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