0

次のように入力しようとしていHashmapます:

public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";
ArrayList<HashMap<String, String>> clipsList = new ArrayList<HashMap<String, String>>();
    for (int i = 0; i < clipDetailsArr.length; i = i
            + constants.noOfColumns) {

        HashMap<String, String> map = new HashMap<String, String>();
        map.put(KEY_PROPNAME, clipDetailsArr[i]);
        map.put(KEY_PROPTYPE, clipDetailsArr[i + 1]);
        map.put(KEY_PRICE, clipDetailsArr[i + 2]);
        map.put(KEY_LOCATION, clipDetailsArr[i + 3]);
        map.put(KEY_SQFT, clipDetailsArr[i + 4]);
        map.put(KEY_SQFTTYPE, clipDetailsArr[i + 5]);
        map.put(KEY_BED, clipDetailsArr[i + 6]);
        map.put(KEY_BATH, clipDetailsArr[i + 7]);
        map.put(KEY_KEYWORDS, clipDetailsArr[i + 8]);
        map.put(KEY_THUMB_URI, clipDetailsArr[i + 9]);

        Log.i("Main", "Clip clipDetailsArr[]: 0=" + clipDetailsArr[i] + " ,1=" + clipDetailsArr[i + 1]
                + " ,2=" + clipDetailsArr[i + 2] + " ,3=" + clipDetailsArr[i + 3] + " ,4="
                + clipDetailsArr[i + 4] + " ,5=" + clipDetailsArr[i + 5] + " ,6="
                + clipDetailsArr[i + 6] + " ,7=" + clipDetailsArr[i + 7] + " ,8="
                + clipDetailsArr[i + 8] + " ,9=" + clipDetailsArr[i + 9]);

        Log.i("Main", "Clip PROPNAME=" + MainActivity.KEY_PROPNAME
                + " ,KEYWORDS" + MainActivity.KEY_KEYWORDS + " ,URI="
                + MainActivity.KEY_THUMB_URI);

        Log.i("Main", "Clip get PROPNAME=" + map.get(KEY_PROPNAME)
                + " ,KEYWORDS" + map.get(KEY_KEYWORDS) + " ,URI="
                + map.get(KEY_THUMB_URI));          
        clipsList.add(map);
    }

ログの出力は次のようなものです。

Clip clipDetailsArr[]: 0=Opt out ,1=Residentail ,2=10000 ,3=Andheri ,4=500 ,5=Carpet ,6=2 ,7=1 ,8=optout ,9=/mnt/sdcard/Clipping/optout.png

Clip PROPNAME= ,KEYWORDS ,URI=

Clip get PROPNAME=/mnt/sdcard/Clipping/optout.png,
         KEYWORDS/mnt/sdcard/Clipping/optout.png,
         URI=/mnt/sdcard/Clipping/optout.png//AND SO ON

上記のログを参照すると、配列に値があり、使用してそれらを配列に入れていmap.put(key,value)ますが、2番目のログMainActivity.KEY_PROPNAMEでは他のフィールドは空です。また、使用するmap.get(key)と、すべての列に最後の列のデータがあります。

最後の列のデータが適切に取り込まれていることに注意してください。

ここで何か間違ったことをしていますか?どんな助けでも感謝します。

4

3 に答える 3

3

""少なくとも 3 つに同じキーを使用しています.put()!! を定義しました:

public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";

そして、Mapas を設定します:

map.put(KEY_PROPNAME, clipDetailsArr[i]);
map.put(KEY_KEYWORDS, clipDetailsArr[i + 8]);
map.put(KEY_THUMB_URI, clipDetailsArr[i + 9]);

Javadocに従って:

マップに以前にキーのマッピングが含まれていた場合、古い値が置き換えられます。

于 2013-07-03T08:08:28.840 に答える
1
public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";

ここでは、すべてのキーの値/名前が同じであるため、すべてのデータが同じキーに保存されます!!

于 2013-07-03T08:10:48.270 に答える
1
public static final String KEY_PROPNAME = "";
public static final String KEY_KEYWORDS = "";
public static final String KEY_THUMB_URI = "";

これはエラーです。名前から空の文字列を作成する代わりに、それらをキーとして使用して、要求された動作を取得する必要があります。

コードをほぼ同じに保つために、次のようなものにすることができます。

public static final String KEY_PROPNAME = "KEY_PROPNAME";
public static final String KEY_KEYWORDS = "KEY_KEYWORDS";
public static final String KEY_THUMB_URI = "KEY_THUMB_URI";

少しファンキーであっても、それはうまくいくはずです;)

于 2013-07-03T08:20:46.757 に答える