2011-06-01 106 views
0

我的android應用程序包括ListView綁定到SimpleCursorAdapter到數據庫。該數據庫包含列,其中包含像如何翻譯ListView文本?

somenameofrow 
anothername 
thirdname 

然而,而不是直接顯示在ListView這些文本數據,我想讀的文本依據 - 從Android資源(實際上是翻譯)。 我該怎麼做?

我認爲我可以使用setViewValue爲同,name在下面的代碼是TextView項目,它顯示我的文字:

case R.id.name: 
    TextView elName = (TextView) view; 
    elName.setText(getApplicationContext().getString(R.string.)); 
    return true; 

我不知道怎麼去理解什麼是資源的正確的ID我正在尋找(可能是cursor.getString(columnIndex)elName.getText())以及如何獲得價值?

Upd。如果我從數據庫中排除名稱並將使用ID來代替,該怎麼辦?它會有幫助嗎?

回答

0

如果你讀了Android指南ListView tutorial,你會發現:

注意,使用硬編碼字符串數組不是最好的設計實踐。爲簡單起見,本教程中使用了一個,以演示ListView小部件。更好的做法是引用由外部資源所定義的字符串數組,如在項目中RES /價值/ strings.xml檔案資源

只需創建在res不同string-array的項目進行/值-XX,其中XX是要翻譯的語言環境。

詳情請參見有關的資源和國際化的開發者指南:http://developer.android.com/guide/topics/resources/localization.html

+0

@Aleadam,謝謝!我應該如何將這個'string-array'鏈接到數據庫條目? – 2011-06-01 19:55:51

+0

@LA_你在上面鏈接的教程中有一個工作示例。 – Aleadam 2011-06-01 19:58:27

+0

謝謝,@Aleadam。但是,我仍然不明白如何在SimpleCursorAdapter中使用該方法,而不是使用ArrayAdapter(本教程中給出的內容)。你能幫我解決這個問題嗎? – 2011-06-02 11:03:04

0

不,你不能,因爲id在編譯過程中以一些基本上隨機的方式生成,所以你不能確定哪個id將具有特定的String資源。

我會建議使用翻譯從DB或者你可以閱讀從資產轉換

+0

是什麼樣的則getIdentifier()?它可以被使用嗎?如果我在數據庫中有翻譯,我該如何理解我應該使用哪種語言? – 2011-06-01 15:41:57

+1

@LA使用Locale.getDefault() - 瞭解此設備中現在默認哪種語言。關於getIdentifier() - 與R.string.id相同 – barmaley 2011-06-01 15:46:21