2011-07-01 91 views
1

我已經創建了一個xml文件,我希望重複多次並在主視圖中填充。 我已閱讀LayoutInflater是要走的路,但我有問題得到它的工作使用LayoutInflater創建動態視圖

第一個問題。我創建的xml項目中有許多textview。可以這樣做,或者XML只能包含一個文本視圖?

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); 

我然後運行輪用於在陣列上循環,並設定各文本的上方的值,然後加入視圖到mainlayout視圖

目前它是在膨脹的視圖示數。 我是否正確地做到了這一點?

謝謝

回答

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); 
+0

在創建多個視圖的情況下,這段代碼似乎總是在第一個創建的視圖中獲得文本視圖。 – Houcheng

0

我不認爲你是這樣做的正確方法。首先要知道的是,滾動視圖只能包含一個元素。你在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的,這應該工作:

((TextView) ((ViewGroup) mScroll.getChildAt(0)).getChildAt(0)).setText("my text"); 

要明白:如果你想達到你做

mScroll.getChildAt(0) 

單一的LinearLayout所以去的第一文本視圖(LinearLayout的第一個孩子),你做

mScroll.getChildAt(0).getChildAt(0)