搜索以编程方式创建的Textview

时间:2011-03-08 06:05:15

标签: android android-sdk-2.1

我正在使用for循环添加TextViews programmatic并使用setId(Int int)为该特定Textview设置唯一ID。 但是现在我想在id的基础上搜索textView。 我该如何搜索?

erorr发生'app意外停止......'这是我的代码。

public class Idtest extends Activity {
    TextView tv;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        LinearLayout ll=new LinearLayout(this);
        tv=new TextView(this);

        tv.setText("Hello");
        ll.addView(tv);

        tv=new TextView(this);
        tv=(TextView)ll.getChildAt(1);

        setContentView(tv);


    }
}

3 个答案:

答案 0 :(得分:2)

最后{p> tv显然是nullLinearLayout只有一个孩子,它位于索引0),所以你基本上都在调用{{1}这会导致异常。我不清楚你要做什么(你的代码很乱)。

假设您尝试在setContentView(null)中展示多个TextView,这是我的建议:

LinearLayout

如果您以后需要其中一个public class Idtest extends Activity { LinearLayout mainLayout; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mainLayout = new LinearLayout(this); setContentView(mainLayout); for (int i=0; i < 10; i++) { TextView tv = new TextView(this); tv.setText("Hello " + i); mainLayout.addView(tv); } } } ,请执行:

TextView

另外,请注意从代码创建布局是邪恶的。如果你可以避免它,请做。例如,如果TextView tvX = mainLayout.getChildAt(X); // where X is between 0 and 9 的数量是动态的,那么从代码创建它们是完全正常的(尽管你可以给它们充气)。但是,也不建议从代码中创建TextView。你应该在XML中拥有它。如果您也可以在XML中使用LinearLayout,那就更好了。

答案 1 :(得分:1)

还有另一种选择......我们有setTag()getTag()方法。虽然添加textview为它提供标记,但只要你想进行搜索,就使用getTag()。

答案 2 :(得分:1)

我想你是要将TextView控件添加到某个ViewGroup(例如LInearLayout)?

您可以使用getChildCount()/ getChildAt(index)遍历ViewGroup子视图,并将子视图ID与您要搜索的视图ID进行比较。