如何获得一个动态创建的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);
...全文
58576 51 点赞 打赏 收藏 举报
写回复
51 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
不错,谢谢分享。
  • 打赏
  • 举报
回复
不错,不错,吧
  • 打赏
  • 举报
回复
mcldljt 2013-02-02
路过帮忙顶了
  • 打赏
  • 举报
回复
加载更多回复
相关推荐
发帖
Android
加入

7.9w+

社区成员

移动平台 Android
申请成为版主
帖子事件
创建了帖子
2013-02-01 02:10
社区公告
暂无公告