gpt4 book ai didi

java - 如何获取动态创建的textview的id?

转载 作者:太空狗 更新时间:2023-10-29 14:23:29 25 4
gpt4 key购买 nike

我正在尝试为我正在制作的 Android 应用程序动态添加和删除 TextView,但我在设置和获取 TextView 的 ID 时遇到了困难。我似乎在最后两行代码(et.setText 和 ll.removeView)中遇到了空指针异常。有没有人对我如何动态设置和获取 TextView 的 ID 有任何建议?显然 .setId 似乎不起作用,或者更有可能是我做错了。

//surrounding non-relevant code removed
EditText et = (EditText) view.findViewById(R.id.edittext_tags);
et.setText("");

TextView nTv = new TextView(view.getContext());
LayoutParams lparams = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);

lparams.setMargins(10, 0, 0, 0);
nTv.setLayoutParams(lparams);
nTv.setId(tag_id);
nTv.setText(str.substring(0, str.length()-1));
nTv.setTextColor(Color.BLUE);
nTv.setTextSize(20);
final LinearLayout linl = (LinearLayout) view.findViewById(R.id.linear_layout_tags);
linl.addView(nTv);

nTv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {

EditText et = (EditText) view.findViewById(R.id.edittext_tags);
TextView t = ((TextView)v);
et.setText(t.getText().toString());
linl.removeView(v);

}
});

最佳答案

TextView 不包含布局中的所有子项,LinearLayout 包含。制作linlfinal,然后就可以在nTVOnClickListener中使用了(只要 view 包含布局。如果没有,您将需要就您想要实现的目标做出一些决定 - 早些时候对布局的引用可能会起作用)。

final LinearLayout linl = (LinearLayout) view.findViewById(R.id.linear_layout_tags);
linl.addView(nTv);

nTv.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
EditText et = (EditText) linl.findViewById(R.id.edittext_tags);
TextView t = ((TextView)v);
et.setText(t.getText().toString());
linl.removeView(v);
}

在您的方法中,实际上并不需要 id,因为您始终拥有对 View 的引用。

但是,如果您想使用 View (非常多余的示例,但这是为了解释):

nTv.setId(tag_id);
linl.addView(nTv);

TextView duplicateTextViewReference (TextView) linl.findViewById (tag_id);

关于java - 如何获取动态创建的textview的id?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14575169/

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