2011-09-01 82 views
1

我一直在學習和構建一個從頭開始的Android應用程序,我碰到了一堵牆。 我在android開發者頁面上閱讀了關於可定製的UI組件,並認爲我可以在應用程序中使用這些來包含聊天頁面的消息。Android:使用我自己的自定義佈局填充滾動視圖

我已經做了XML文件,但我不知道如何從我的代碼調用這些佈局文件。 目前我從一個數組中讀取消息,然後通過一個循環制作一個TextView,並通過代碼爲它設置必要的屬性,然後將它添加到scrollView中的RelativeLayout中。這一切都正常,但我希望我的消息顯示更多信息(例如時間和收件人是否已收到/閱讀它),這是新的XML文件進來的地方,它們已經設置了字段和佈局,所以我我想我可以調用這些,設置一些變量,並完成它。

正如我之前所說的,問題是我不知道如何引用我的代碼中的佈局文件。我已經閱讀了關於構建自己的用戶界面元素的Android開發者頁面上的所有文章,並且我也搜索了我的公平份額,但顯然我是唯一一個想過這樣做的人,或者我可以找不到合適的關鍵字。所以現在我問你們。感謝您提供給我的任何答案。

編輯: 我一直在做一些研究,我想我需要做的就是寫我自己的適配器與我自己的類的消息以及這些消息我自己的XML佈局工作。不過,我不知道從哪裏開始,因爲我找不到有關如何編寫自己的適配器的任何好文檔。

+0

我需要澄清。我認爲以下基本上是你想要做的:在你的ScrollView中添加newMessage到relativeLayout,然後在newMessage下面添加timeAndDateLayout.xml,然後能夠在timeAndDateLayout.xml下添加newMessage2,然後再添加timeAndDateLayout.xml(with不同的值)低於newMessage2 這基本上是你想要的? – Jakar

+0

排序,是的。我創建了一個XML文件,其中包含2個TextView,一個用於時間/日期,另一個用於消息。當我收到新消息(或加載它們時),我希望能夠使用XML文件將它們添加到我的滾動視圖中。 – Lars

+0

您可以將您的解決方案作爲答案發布,然後接受它,因爲我的答案實際上不是解決方案,並且對於那些需要這些信息的人來說它更明顯。也就是說,如果你在乎足夠的麻煩。 – Jakar

回答

0

對於那些有興趣我是如何做到了(如果你在同樣的問題自己運行):
對於每一個名單,我想用我自己的隨機組數據來創建創建我自己的適配器延伸BaseAdapter 。通過簡單地覆蓋getView方法,可以膨脹並填充列表項的不同部分。
我使用this教程來幫助我創建自己的適配器。

0

你可以做以下,但將創建一個新的TextView不理你有什麼佈局:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView); 
TextView textView = new TextView(this); 
textView.setText(message); 
scrollView.addView(textView); 
textView.setText(timeAndDate); 
scrollView.addView(textView); 

我從來沒有親自使用滾動型,所以我沒有對上述功能確保100% ,但它與我的經驗與LinearLayout和RelativeLayout相匹配。

或者,因爲你有你的customr佈局已,你會怎麼做:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView); 
TextView textView = (TextView)findViewById(R.id.textView); 
textView.setText(messageTimeDate); 
scrollView.addView(textView); 

這是本質,你可以如何處理它。我不是100%確定是否可以在兩種實現中多次添加textView。如果拋出一個異常,你可以使用的文本視圖,如數組列表:

ScrollView scrollView = (ScrollView)findViewById(R.id.scrollView); 
ArrayList<TextView> textView = new ArrayList<TextView>(); 
textView.add((TextView)findViewById(R.id.textView)); 
textView.get(index).setText(messageTimeDate); 
scrollView.addView(textView.get(index).getId()); 

無論我提出的TextView的ID,你可以使用郵件或TIMEDATE,和你兩個人我引用的每個東西,然後。

+1

感謝您的回覆,但這不是我真正想要的。 我已經找到了另一個如何做到這一點,雖然我現在使用一個適配器,並指定一個ViewBinder來指定哪些數據在哪些字段。 感謝您的幫助。 – Lars

+0

沒問題。我從來沒有使用ViewBind或適配器,但我相信這將是一個更簡單的方法。很高興你找到了解決方案。 – Jakar

+1

對於那些對我如何做的感興趣的人(如果你自己也遇到同樣的問題):對於我想用我自己的隨機數據集創建的每個列表,我創建了自己的適配器,它擴展了BaseAdapter。通過簡單地覆蓋getView方法,可以膨脹並填充列表項的不同部分。 我使用[this](http://www.nofluffjuststuff.com/blog/vladimir_vivien/2011/09/creating_android_view_adapters_is_easy_but_beware_)教程來幫助我創建自己的適配器 – Lars