2010-11-18 103 views
1

我正在嘗試爲一個項目創建一個遊戲大廳,並且我希望遊戲的狀態文本是不同的顏色:紅色代表「[IN PROGRESS]」遊戲,綠色代表「[等待x玩家]「。 ListView將填充數據,每個ListView項目將有一個遊戲ID,然後立即在該遊戲狀態的右側。動態更改ListView中TextView的文本顏色?

現在我基本上使用Hello ListView代碼來創建我的ListView。

(在構造函數)

ArrayList<HashMap<String, String>> gameList = new ArrayList<HashMap<String, String>>(); 
private ListView gamesListView; 
private SimpleAdapter gameItems. 

(在的onCreate())

gamesListView = (ListView) findViewById(R.id.listViewGames); 
gameItems = new SimpleAdapter(this, gameList, R.layout.gamelistitem, 
    new String[] { "line1, "line2}, 
    new int[] { R.id.tvGameID, R.id.tvGameStatus }); 
gamesListView.setAdapter(gameItems); 

然後,我有一個刷新按鈕,從我們的數據庫中獲得數據。它會得到兩個字符串,一個用於遊戲的ID,另一個用於遊戲的狀態。如果遊戲狀態爲0,那麼它仍在等待玩家。如果遊戲狀態是1,那麼遊戲已經開始。所以,我創建了一個gameItem添加到gameList中:

HashMap<String, String> gameItem = new HashMap<String, String>(); 
gameItem.put("line1", gameIDString); 
gameItem.put("line2", renderGameStatus(gameStatusString)); 
gameList.add(gameItem); 
gameItems.notifyDataSetChanged(); 

private String renderGameStatus(String statusString) { 
    if (statusString.equals("0")) { 
     return "[Waiting for players]"; 
    } else { 
     return "[IN PROGRESS]"; 
    } 
} 

這就是我卡住的地方。當我創建gameItem或將其添加到gameList時,我不太瞭解如何更改特定的TextView。我沒有辦法看到訪問TextView的屬性。我看到如何設置視圖的文本(通過將字符串映射到「line1」和「line2」,但我不知道如何更改任何屬性。

感謝您的任何幫助!

回答

1

正確回答這個問題,就是要遵循很多教程的一個在那裏定製的ListView行,併爲您的ListView使用自定義適配器。Here's一個好的。

3

你創建的XML文件在你的TextView如果是這樣嘗試:

TextView t = (TextView) findViewById(R.layout.yourTextView); 
t.setTextColor(color); 
t.setBackgroundColor(color); 

希望幫助

+0

不幸的是沒有...不會改變ListView中所有TextView的顏色嗎?我正在尋找改變ListView中每個特定TextView的顏色。 – Rockmaninoff 2010-11-18 23:29:15

+0

嗯,現在我明白了..我不知道你是否已經嘗試過,但我記得有關實施BaseAdapter有完全控制創建的列表和東西的東西。可能你應該看看那個。祝你好運 – dds 2010-11-18 23:38:22