1

私はAndroidアプリを開発しています。HashMap を使用して、2 つの配列を互いにマッピングしています。これらの配列を String[] に変更し、それらを一緒にマップします。値を返す必要がありますが、null を返します。どこが間違っているのかわかりません。オンラインで検索しましたが、有用なものは見つかりませんでした。私のコードは以下の通りです:

StationList.java の一部

Spinner2.setOnItemSelectedListener(new OnItemSelectedListener() {

        public void onItemSelected(AdapterView<?> arg0, View arg1,
                int arg2, long arg3) {
            // TODO Auto-generated method stub

                String selectedValue = arg0.getItemAtPosition(arg2).toString();

                String[] Yellow_ID = getResources().getStringArray(R.array.Yellow_ID);
                String[] Yellow_Li = getResources().getStringArray(R.array.Yellow_Line);

                Map<String[], String[]> myMap = new HashMap<String[], String[]>();
                    myMap.put(Yellow_Li, Yellow_ID);

                String[] value = myMap.get(selectedValue);
                tv12.setText(String.valueOf (value));




        }

Valueで null を返しますTextView。これは、値が互いにマッピングされていないためだと思います。何かお役に立てば幸いです。

4

4 に答える 4

4

値を取得する方法に基づいて、ハッシュマップにデータを入力するときに、このようなことをもっとやりたいと思うでしょう

Map<String, String> myMap = new HashMap<String, String>();
for (int i = 0; i < Yellow_Li.length(); i++) {
     myMap.put(Yellow_Li[i], Yellow_ID[i]);
}
String value = myMap.get(selectedValue);

String 配列は同じサイズであると想定しているため、そうでない場合はそのロジックを追加する必要があります。

また、配列が同じサイズである場合は、次のようにすることができるため、ハッシュマップを作成する必要はありません。

int index = -1;
for (int i = 0; i < Yellow_Li.length(); i++) {
    if (Yellow_Li[i].equals(selectedValue)) {
        index = i;
        break;
    }
}

String value = Yellow_ID[index]; //should do a check for -1 before you try to assign "value"
于 2013-10-02T21:15:15.993 に答える