我创建了一个xml文件,我希望重复多次并在主视图中填充。 我已经读过LayoutInflater是要走的路,但我遇到了让它工作的问题
第一个问题。我创建的xml项目中有许多textview。可以这样做还是xml只能包含一个textview?
ScrollView mainlayout = (ScrollView) findViewById(R.id.ScrollView1);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = (View) inflater.inflate(R.layout.sightmarks_item, null);
TextView textview1 = (TextView) inflater.inflate(R.id.textView1, null);
EditText editview1 = (EditText) inflater.inflate(R.id.editview1, null);
EditText editview2= (EditText) inflater.inflate(R.id.editview2, null);
然后我在数组上运行for循环并为上面的每个值设置文本,然后将视图添加到mainlayout视图
目前在膨胀的视图上出错了。 我这样做是否正确?
谢谢
答案 0 :(得分:5)
您的代码中存在一些问题。要获取任何视图的元素,请使用findViewById
方法
ScrollView mainlayout = (ScrollView) findViewById(R.id.ScrollView1);
LayoutInflater inflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = (View) inflater.inflate(R.layout.main, null);
TextView textview1 = (TextView) view.findViewById(R.id.textview1);
EditText editview1 = (EditText) view.findViewById(R.id.editview1);
EditText editview2= (EditText) view.findViewById(R.id.editview2);
答案 1 :(得分:0)
我不认为你这样做是正确的。首先要知道的是Scrollview只能包含一个元素。 Scrollview中是否有一个独特的LinearLayout或TableLayout,用于封装textViews?
如果我是你:
在XML布局文件中(我将其命名为“yourfile”),使用层次结构,例如:
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" ... />
<LinearLayout ...>
<TextView .../>
<TextView .../>
...
</LinearLayout>
</ScrollView>
然后在你的活动中,给滚动视图充气:
ScrollView mScroll = (ScrollView) getLayoutinflater().inflate(R.layout.yourfile, null)
然后要获取TextViews,请使用getChild()浏览ScrollView。例如,要将“我的文本”分配给第一个文本视图,这应该有效:
( (TextView) ((ViewGroup) mScroll.getChildAt(0)).getChildAt(0)).setText("my text");
要理解:如果您想要达到单个LinearLayout
mScroll.getChildAt(0)
所以要进入第一个文本视图(LinearLayout的第一个孩子),你可以
mScroll.getChildAt(0).getChildAt(0)