0

翻訳する必要のある行がたくさんあるテーブルがあります。ほとんどの値は整数であるため、値を変換する必要はありません。

ただし、私のデータは、データがキーと値のペアで通常どおりに格納されるJSON構造から取得されます。例えば:

{
  "age":24,
  "hair-color":"black",
  "weight":42,
  "height":123,
  // ...
}

これまでのところ、次のようなstrings.xmlがあります。

<resources>
  <string name="meta_age">Alter</string>
  <string name="meta_hair_color">Haarfarbe</string>
  <string name="meta_weight">Gewicht</string>
  <string name="meta_height">Körpergröße</string>
  <!-- ... -->
</resources>

このデータは、カスタムArrayAdapterを使用してリストビューで視覚化されます。これは正常に機能しますが、キーと値のペアをその変換にマッピングするための最良の方法がわかりません。

私は今ここにこのコードを持っています:

public static final int[] fields = new int[] {R.string.meta_age, R.string.meta_hair_color, R.string.meta_weight, R.string.meta_height, /* ... */;

UIを構築するには、これまでのところ、文字列をキーにマップする必要があります。これは、次の厄介なコードで行われます。

List<Integer> fieldIndex = new ArrayList<Integer>(fields.length);
for(int i : fields) {
    fieldIndex.add(i);
}
translation = new HashMap<String, Integer>();
translation.put("age", fieldIndex.indexOf(R.string.meta_age));
translation.put("hair-color", fieldIndex.indexOf(R.string.meta_hair_color));
translation.put("weight", fieldIndex.indexOf(R.string.meta_weight));
translation.put("height", fieldIndex.indexOf(R.string.meta_height));

次のステップは、jsonフィールドのターゲットインデックスがわかったので、それらを文字列IDのフィールドリストと一緒に配置することです。しかし、このコードはあまりパフォーマンスが良くないと思います。どうすればもっと上手に書くことができますか?

4

1 に答える 1

0

確かに少し複雑に聞こえます。キー/翻訳のような方法ですべての可能な翻訳を含む辞書を用意してみませんか。
ほとんどの翻訳フレームワークもこのように機能します。

于 2012-10-30T12:36:57.353 に答える