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

时间:2013-01-29 03:25:28

标签: java android textview android-view findviewbyid

我正在尝试为我正在制作的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);

    }
});

1 个答案:

答案 0 :(得分:1)

TextView不包含布局中的所有子项LinearLayout。制作linl final,然后您可以在nTV的{​​{1}}中使用它(只要OnClickListener包含布局。如果没有,您就是需要做出一些关于你想要实现什么的决定 - 早些时候对布局的引用可能会有用。)

view

使用您的方法不需要id,因为您总是引用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);
    }