2011-06-01 3 views
0

Mon application Android comprend ListView lié à SimpleCursorAdapter à la base de données. Cette base de données contient la colonne, qui contient des données commeComment traduire les textes ListView?

somenameofrow 
anothername 
thirdname 

Cependant, au lieu d'afficher directement ces textes dans le ListView, je voudrais lire des textes selon (en fait - traductions) des ressources Android. Comment dois-je faire?

Je pense que je peux utiliser setViewValue pour la même, name dans l'élément du code ci-dessous est TextView, qui affiche mon texte:

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

Je ne sais pas comment comprendre ce qui est id correct de la ressource Je cherche (probablement, cursor.getString(columnIndex) ou elName.getText()) et comment obtenir la valeur?

Mise à jour. Que faire si j'exclus des noms de la base de données et utilisera des ID à la place. Cela va-t-il aider?

Répondre

0

Si vous lisez le guide android ListView tutorial, vous trouverez:

Notez que l'utilisation d'un tableau de chaînes codées en dur n'est pas la meilleure pratique de conception. Un est utilisé dans ce tutoriel pour plus de simplicité, afin de démontrer le widget ListView. La meilleure pratique consiste à faire référence à un tableau de chaînes défini par une ressource externe, comme une ressource dans votre résolution de projet/valeurs/fichier strings.xml

créer simplement différents éléments de string-array dans res/valeurs-XX, où XX sont les locales que vous voulez traduire.

Voir le guide de dev pour plus de détails sur les ressources et i18n: http://developer.android.com/guide/topics/resources/localization.html

+0

@Aleadam, merci! Comment dois-je lier ce 'string-array' aux entrées de la base de données? –

+0

@LA_ vous avez un exemple de travail dans le tutoriel que j'ai lié ci-dessus. – Aleadam

+0

Merci, @Aleadam. Cependant, je ne comprends toujours pas comment utiliser cette approche avec SimpleCursorAdapter et non avec ArrayAdapter (ce qui est donné dans le tutoriel). Pourriez-vous s'il vous plaît m'aider avec cela? –

0

Non, vous ne pouvez pas, puisque les identifiants sont générés de manière essentiellement semi-aléatoire lors de la compilation, vous ne pouvez donc pas être sûr quel ID aura une ressource spécifique String.

Je suggère d'utiliser la traduction de DB ou vous pouvez lire les traductions des actifs

+0

Qu'est-ce à propos getIdentifier()? Peut-il être utilisé? Si j'ai des traductions dans la base de données, comment puis-je comprendre quelle langue utiliser? –

+1

@LA Utilisez Locale.getDefault() pour savoir quelle langue est actuellement utilisée par défaut sur ce périphérique. Concernant getIdentifier() - c'est pareil que R.string.id – barmaley

Questions connexes