2011-12-08 34 views
1

我試圖把一些意見納入使用LayoutInflater片段添加到一個片段多個視圖。他們是TextViews,但我似乎只能設置我添加的第一個值。它看起來像一個身份證衝突造成的問題,但我是在如何克服這一點的損失。 我onCreateView的相關位看起來是這樣的:使用LayoutInflater

ViewGroup vg = (ViewGroup) inflater.inflate(R.layout.data_viewer, 
      container, false); 

    HashMap<String, Long> titles = mHelper.getTitles("firestations"); 

    for (String key : titles.keySet()) { 
     **View row = inflater.inflate(R.layout.row, vg, true); 
     TextView label = (TextView) row.findViewById(R.id.textView1); 
     label.setText(key);** 
     TextView value = (TextView) row.findViewById(R.id.textView2); 
     value.setText(getArg(key)); 
    } 

你可以從帶星線看我誇大一個「行」(這只是一個水平線性佈局與2個文本視圖稱爲textView1和textView2在它)。我提供了我膨脹的ViewGroup的句柄,並通過true來獲取附加到父類的視圖。所有這些似乎工作正常。然後我在我剛膨脹的行上調用findViewById。我原以爲這個發現只會挑選那個特定行的孩子。它看起來像查找使用更寬的範圍,並且匹配的完整集ID(它們是相同的 - 它們都是從同一塊XML的)。然後它給我回第一個。 所有這一切的結果是,我得到正確佈置在頂部對TextViews的顯示數據的最後一排的屏幕。 TextView的其餘部分在其中定義了默認文本。

任何人都知道我可以解決這個問題嗎?

感謝,

安東尼諾蘭

+0

嘗試使用'FALSE'你'膨脹()'在循環調用的第三個參數,則行加入到'的ViewGroup '配置它後手動。原則上,你看起來不錯,所以我只是在這裏猜測。另外,請將「commonsware」標籤用於與我的書籍或開源項目相關的內容 - 此問題既不適用也不適用。 – CommonsWare

+0

我在得到您的建議之前嘗試了這一點,它可以工作。看起來像一個小錯誤,但現在我知道它在那裏,我可以繞過它,沒有麻煩。公平評論標籤。我雖然只是說'你可以看看這個'!謝謝你的幫助。 –

回答

1

看起來有可能在支持代碼中的小錯誤。明確增加(而不是使用真實PARAM)的意見,工作正常:

for (String key : titles.keySet()) { 
     View row = inflater.inflate(R.layout.row, vg, false); 
     TextView label = (TextView) row.findViewById(R.id.textView1); 
     label.setText(key); 
     TextView value = (TextView) row.findViewById(R.id.textView2); 
     value.setText(getArg(key)); 
     vg.addView(row); 
    }