如何获得一个动态创建的textview的ID?

问答小助手 2013-02-01 02:10:14
加精
原问题来自于CSDN问答频道,更多解决方案请看:http://ask.csdn.net/questions/1280

问题描述:

我想要在一个android app中动态添加和删除TextView,我现在正在做,但是我在设置和获得TextView的ID的时候碰到了困难。在最后两行代码中我好想得到了空指针异常(et settext和ll.removeView)。有人知道我怎么可以动态的设置和获得一个textview的ID么?setId似乎没有工作,还是就是我错了?

//删除无关的代码
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);

}
});



解决方案:

在layout中,TextView并不包含所有的children,但是LinearLayout有。最后,你可以在TextView的OnClickListener中用(只要视图包含layout。如果没有,可能你需要确定一下你想要做什么功能-提前做一个参考的布局可能会有效)

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并不是真的需要,因为你总是有一个引用的视图。

然后,如果你想要用views的话(非常冗余的例子,但是它可以解释的更清楚):

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

TextView duplicateTextViewReference (TextView) linl.findViewById (tag_id);
...全文
58673 51 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
51 条回复
切换为时间正序
请发表友善的回复…
发表回复
huoshenaoyu 2013-03-07
  • 打赏
  • 举报
回复
lhw7791086 2013-02-19
  • 打赏
  • 举报
回复
我是来学习的
shishuqiu 2013-02-19
  • 打赏
  • 举报
回复
非常值得学习,支持!
owuHuaRou1 2013-02-15
  • 打赏
  • 举报
回复
额。。。迷茫中
oKeXiLiao 2013-02-14
  • 打赏
  • 举报
回复
数码玩艺 2013-02-14
  • 打赏
  • 举报
回复
不错,感谢分享
asdasd456123 2013-02-11
  • 打赏
  • 举报
回复
支持下楼主
sunmy1688888 2013-02-09
  • 打赏
  • 举报
回复
不懂,过来学习的
oumaiguo 2013-02-07
  • 打赏
  • 举报
回复
才学来看看。
sxgghjx 2013-02-05
  • 打赏
  • 举报
回复
不错,支持顶一下
m1msun 2013-02-05
  • 打赏
  • 举报
回复
不会啊aaaaa
youhao1999 2013-02-05
  • 打赏
  • 举报
回复
路过帮顶。。。。
gmkeys 2013-02-05
  • 打赏
  • 举报
回复
该学习学习了
ylhsw0 2013-02-04
  • 打赏
  • 举报
回复
支持下,,,
txzsp 2013-02-04
  • 打赏
  • 举报
回复
fengbuer 2013-02-04
  • 打赏
  • 举报
回复
不会啊
nvkerr 2013-02-03
  • 打赏
  • 举报
回复
很好很强大、很好
tarena_1031 2013-02-03
  • 打赏
  • 举报
回复
不错,谢谢分享。
qaz123wsx123qaz123 2013-02-03
  • 打赏
  • 举报
回复
不错,不错,吧
mcldljt 2013-02-02
  • 打赏
  • 举报
回复
路过帮忙顶了
加载更多回复(17)

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧