2016-03-13 2 views
-1

Я извлекаю HashMap из JSONArray и отправляю его в SQLite. Это дает мне. java.lang.ClassCastException: java.lang.Integer нельзя передать в java.lang.String. Ошибка преобразования HashMap.Ошибка Java HashMap: java.lang.ClassCastException: java.lang.Integer нельзя передать в java.lang.String

Тип HashMap>.

for(int i=0;i<adsarray.length();i++){ 
     JSONObject obj=adsarray.getJSONObject(i); 
     HashMap mapReceivedAdDetails=new HashMap(); 
     HashMap mapBusinessInfo=new HashMap(); 



     //mapBusinessInfo.put 
     mapReceivedAdDetails.put("RecAdId", obj.getInt("received_ad_id")); 
     mapReceivedAdDetails.put("RecBusinessId",obj.getInt("business_id")); 
     mapReceivedAdDetails.put("RecBusinessId",obj.getInt("user_id")); 
     mapReceivedAdDetails.put("RecAdtitle",obj.getString("received_ad_title")); 
     mapReceivedAdDetails.put("RecAdDetail",obj.getString("received_ad_detail")); 
     mapReceivedAdDetails.put("RecBusinessZip",obj.getString("business_zip")); 
     mapReceivedAdDetails.put("RecBusinessCountry", obj.getString("business_country")); 
     mapReceivedAdDetails.put("AdCreated", obj.getString("adreceived_created")); 
     mapReceivedAd.put(i, mapReceivedAdDetails); 

    //Log.i("ReceivedId",mapReceivedAd.toString()); 

     mapBusinessInfo.put("BusinessId",obj.getInt("business_id")); 
     mapBusinessInfo.put("BusUserId",obj.getInt("user_id")); 
     mapBusinessInfo.put("BusName",obj.getString("business_name")); 
     mapBusinessInfo.put("BusSt1",obj.getString("business_street1")); 
     mapBusinessInfo.put("BusSt2",obj.getString("business_street2")); 
     mapBusinessInfo.put("BusCity",obj.getString("business_city")); 
     mapBusinessInfo.put("BusState",obj.getString("business_state")); 
     mapBusinessInfo.put("BusCountry",obj.getString("business_country")); 
     mapBusinessInfo.put("BusZip",obj.getString("business_zip")); 
     mapBusinessInfo.put("BusContactNo",obj.getString("business_contactno")); 
     mapBusinessInfo.put("BusWebsite",obj.getString("business_website")); 
     mapBusinessInfo.put("BusCreated",obj.getString("business_created")); 
     mapBusinessDetail.put(i,mapBusinessInfo); 
    // Log.i("BusinessDetail",mapBusinessDetail.toString()); 



    /* ad_business_id=obj.getInt("business_id"); 
     ad_user_id=obj.getInt("user_id"); 
     receive_ad_title=obj.getString("received_ad_title"); 
     receive_ad_detail=obj.getString("received_ad_detail"); 
     ad_business_zip=obj.getString("business_zip"); 
     ad_business_country=obj.getString("business_country");*/ 
     //ad_date_created=obj.getString("date_created"); 
     //Log.i("+ad_business_id+"+"+ad_user_id+" "+receive_ad_title+" "+receive_ad_detail+" "+ad_business_zip+" "+ad_business_country+" "); 

} 

SQLITE код

while(i<mapBusinessInfo.size()) 
    { 

     insert.bindLong(1, Integer.parseInt(mapBusinessInfo.get(i).get("BusUserId"))); 
     insert.bindLong(2, Integer.parseInt(mapBusinessInfo.get(i).get("BusinessId"))); 
     insert.bindString(3, mapBusinessInfo.get(i).get("BusName")); 
     insert.bindString(4, mapBusinessInfo.get(i).get("BusSt1")); 
     insert.bindString(5, mapBusinessInfo.get(i).get("BusSt2")); 
     insert.bindString(6, mapBusinessInfo.get(i).get("BusCity")); 
     insert.bindString(7, mapBusinessInfo.get(i).get("BusState")); 
     insert.bindString(8, mapBusinessInfo.get(i).get("BusCountry")); 
     insert.bindString(9, mapBusinessInfo.get(i).get("BusZip")); 
     insert.bindString(10, mapBusinessInfo.get(i).get("BusContactNo")); 
     insert.bindString(11, mapBusinessInfo.get(i).get("BusWebsite")); 
     insert.bindLong(12, Long.parseLong(mapBusinessInfo.get(i).get("BusCreated"))); 
     insert.execute(); 
     i++; 

    } 
    db.setTransactionSuccessful(); 
    Log.i("Transaction", "Successful"); 
} 

Ошибка по адресу:

insert.bindLong(1, Integer.parseInt(mapBusinessInfo.get(i).get("BusUserId"))); 

Ниже приведен Logcat: 03-13 09: 05: 23,034 18810-18866 /? W/System.err: java.lang.ClassCastException: java.lang.Integer не может быть добавлен в java.lang.String 03-13 09: 05: 23.034 18810-18866 /? W/System.err: at com.example.SQLITEDatabase.DatabaseHandle.InserBusinessInfo (DatabaseHandle.java:143) 03-13 09: 05: 23.042 18810-18866 /? W/System.err: at com.example.deals.NewUserDetailPage $ fetchadvertisements.doInBackground (NewUserDetailPage.java:283) 03-13 09: 05: 23.042 18810-18866 /? W/System.err: at com.example.deals.NewUserDetailPage $ fetchadvertisements.doInBackground (NewUserDetailPage.java:255) 03-13 09: 05: 23.046 18810-18866 /? W/System.err: at android.os.AsyncTask $ 2.call (AsyncTask.java:287) 03-13 09: 05: 23.062 18810-18866 /? W/System.err: at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305) 03-13 09: 05: 23.062 18810-18866 /? W/System.err: at java.util.concurrent.FutureTask.run (FutureTask.java:137) 03-13 09: 05: 23.066 18810-18866 /? W/System.err: at android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:230) 03-13 09: 05: 23.070 18810-18866 /? W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1076) 03-13 09: 05: 23.070 18810-18866 /? W/System.err: at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:569) 03-13 09: 05: 23.086 18810-18866 /? W/System.err: at java.lang.Thread.run (Thread.java:856) 03-13 09: 05: 23.138 18810-18866 /? W/System.err: java.lang.RuntimeException: не удается создать обработчик внутри потока, который не вызвал Looper.prepare() 03-13 09: 05: 23.170 18810-18866 /? W/System.err: at android.os.Handler. (Handler.java:121) 03-13 09: 05: 23.170 18810-18866 /? W/System.err: at android.widget.Toast $ TN. (Toast.java:322) 03-13 09: 05: 23.174 18810-18866 /? W/System.err: at android.widget.Toast. (Toast.java:91) 03-13 09: 05: 23.186 18810-18866 /? W/System.err: at android.widget.Toast.makeText (Toast.java:238) 03-13 09: 05: 23.186 18810-18866 /? W/System.err: at com.example.deals.NewUserDetailPage $ fetchadvertisements.doInBackground (NewUserDetailPage.java:285) 03-13 09: 05: 23.194 18810-18866 /? W/System.err: at com.example.deals.NewUserDetailPage $ fetchadvertisements.doInBackground (NewUserDetailPage.java:255) 03-13 09: 05: 23.206 18810-18866 /? W/System.err: at android.os.AsyncTask $ 2.call (AsyncTask.java:287) 03-13 09: 05: 23.214 18810-18866 /? W/System.err: at java.util.concurrent.FutureTask $ Sync.innerRun (FutureTask.java:305) 03-13 09: 05: 23.218 18810-18866 /? W/System.err: at java.util.concurrent.FutureTask.run (FutureTask.java:137) 03-13 09: 05: 23.222 18810-18866 /? W/System.err: at android.os.AsyncTask $ SerialExecutor $ 1.run (AsyncTask.java:230) 03-13 09: 05: 23.254 18810-18866 /? W/System.err: at java.util.concurrent.ThreadPoolExecutor.runWorker (ThreadPoolExecutor.java:1076) 03-13 09: 05: 23.274 18810-18866 /? W/System.err: at java.util.concurrent.ThreadPoolExecutor $ Worker.run (ThreadPoolExecutor.java:569) 03-13 09: 05: 23.282 18810-18866 /? W/System.err: at java.lang.Thread.run (Thread.java:856) 03-13 09: 05: 23.454 320-320 /?W/InputMethodManagerService: окно уже целенаправленный, игнорируя усиление фокусировки: [email protected] атрибута = NULL

+0

Где ошибка происходит в вашем коде? Опубликовать всю трассировку стека. –

ответ

1

Вы можете свободно конвертировать Hashmap в String не будет никаких обид на всех. Но то, что вы делаете, у вас есть Hasmap, называемый mapReceivedAdDetails, и вы пытаетесь преобразовать другую переменную, которая не была показана в фрагменте mapReceivedAd.

Так вместо того, чтобы делать

mapReceivedAd.toString(); 

ли

mapReceivedAdDetails.toString(); 
+0

Привет, Шри Кришна, Спасибо, что посмотрели. Я делаю HashMap.toString(); просто чтобы узнать, какие значения хранятся. Моя задача ниже, конвертируя ее. Я сначала извлекаю его из Int для хранения в String HashMap, а затем преобразовываю его обратно в int при вставке в SQLite, insert.bindLong (1, Integer.parseInt (mapBusinessInfo.get (i) .get («BusUserId»))) ; insert.bindLong (2, Integer.parseInt (mapBusinessInfo.get (i) .get («BusinessId»))); – HKA

+0

Используйте 'String.valueOf (integer)' для преобразования 'integer' обратно в' String'. Возможно, вы сделали что-то еще. –

+0

Теперь он работает. Извлечение значения из JSONArray. Изменил его на obj.get ("business_Id") вместо obj.getInt ("business_id"). Получаем вместо getInt. – HKA

Смежные вопросы