如何获得一个动态创建的textview的ID?
2013-02-01 13:47
531 查看
原问题来自于CSDN问答频道,更多解决方案请看:http://ask.csdn.net/questions/1280
问题描述:
我想要在一个android app中动态添加和删除TextView,我现在正在做,但是我在设置和获得TextView的ID的时候碰到了困难。在最后两行代码中我好想得到了空指针异常(et settext和ll.removeView)。有人知道我怎么可以动态的设置和获得一个textview的ID么?setId似乎没有工作,还是就是我错了?
解决方案:
在layout中,TextView并不包含所有的children,但是LinearLayout有。最后,你可以在TextView的OnClickListener中用(只要视图包含layout。如果没有,可能你需要确定一下你想要做什么功能-提前做一个参考的布局可能会有效)
用你的方法的话,id并不是真的需要,因为你总是有一个引用的视图。
然后,如果你想要用views的话(非常冗余的例子,但是它可以解释的更清楚):
问题描述:
我想要在一个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);
相关文章推荐
- 如何创建一个UITableView(步骤详解 没有任何编程基础都能学会 )
- .NET : 如何动态根据一个业务实体类型创建XSD架构文件
- measure(0, 0) 如何动态获得view的大小
- 如何使用一个textview控件使字体出现两种颜色
- Fragments创建一个动态的用户界面及其Fragments如何互相通讯
- 【PB】如何创建一个动态的数据窗口对象?
- 如何在一个FormView里获得另一个FormView的指针
- 给一个android的TextView设置背景颜色动态显示,到那时好像不起作用。我是少了什么东西么?
- androi View视图框架源码分析之一:android是如何创建一个view的
- java如何创建并初始化一个动态的二维数组
- 如何创建一个动态的数据窗口对象
- 如何解决ArrayAdapter requires the resource ID to be a TextView
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- 由于html的id不能重复,所以不得不用的时候得创建一个随机的动态id
- 如何正确的获得一个view的宽和高
- Android 如何根据设置文字大小动态计算TextView长度、动态设置Relativelayout布局
- 如何自定义一个View,并动态设置style?
- 动态的给TextView添加一个图片
- 如何解决ArrayAdapter requires the resource ID to be a TextView