2014-11-20 4 views
-1

У меня есть активность Android в том, что я добавляю позиции listItem в массивList, а также удаляю, если необходимо, (select/remove). Так когда я собираюсь удалить последний индекс он говорит:Исключение IndexOutOfBounds при попытке удалить элемент из массива в Android

LogCat

11-20 06:31:29.819: W/System.err(19963): java.lang.IndexOutOfBoundsException: Invalid index 1, size is 1 
11-20 06:31:29.839: W/System.err(19963): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255) 
11-20 06:31:29.839: W/System.err(19963): at java.util.ArrayList.remove(ArrayList.java:403) 
11-20 06:31:29.839: W/System.err(19963): at com.amar.travelonwards.HotelListActivity$RssAdapter$1.onClick(HotelListActivity.java:949) 
11-20 06:31:29.839: W/System.err(19963): at android.view.View.performClick(View.java:4424) 
11-20 06:31:29.839: W/System.err(19963): at android.view.View$PerformClick.run(View.java:18383) 
11-20 06:31:29.849: W/System.err(19963): at android.os.Handler.handleCallback(Handler.java:733) 
11-20 06:31:29.849: W/System.err(19963): at android.os.Handler.dispatchMessage(Handler.java:95) 
11-20 06:31:29.849: W/System.err(19963): at android.os.Looper.loop(Looper.java:137) 
11-20 06:31:29.849: W/System.err(19963): at android.app.ActivityThread.main(ActivityThread.java:4998) 
11-20 06:31:29.849: W/System.err(19963): at java.lang.reflect.Method.invokeNative(Native Method) 
11-20 06:31:29.849: W/System.err(19963): at java.lang.reflect.Method.invoke(Method.java:515) 
11-20 06:31:29.849: W/System.err(19963): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:777) 
11-20 06:31:29.849: W/System.err(19963): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:593) 
11-20 06:31:29.849: W/System.err(19963): at dalvik.system.NativeStart.main(Native Method) 

.Я пытался не повезло мой код, как показано ниже, Пожалуйста, помогите мне Короче это out.Thanks заранее ..!

код

private class RssAdapter extends ArrayAdapter<RSSFeed_SelectedHotelResult> { 
     private List<RSSFeed_SelectedHotelResult> rssFeedLst; 

     public RssAdapter(Context context, int textViewResourceId, 
       List<RSSFeed_SelectedHotelResult> rssFeedLst) { 
      super(context, textViewResourceId, rssFeedLst); 
      this.rssFeedLst = rssFeedLst; 
      Boolean addtoShotlist; 
     } 

     public View getView(final int position, View convertView, 
       ViewGroup parent) { 

      View view = convertView; 

      if (convertView == null) { 
       view = View.inflate(HotelListActivity.this, R.layout.list_row, 
         null); 

       rssHolder = new RssHolder(); 
       rssHolder.iv_add = (ImageView) view.findViewById(R.id.iv_add); 
       rssHolder.rssTitleView = (TextView) view 
         .findViewById(R.id.title); 
       rssHolder.rssImagHotel = (ImageView) view 
         .findViewById(R.id.hotelImage); 
       rssHolder.rssImageHotelRate = (ImageView) view 
         .findViewById(R.id.rateHotel2); 
       rssHolder.rssHotelPrice = (TextView) view 
         .findViewById(R.id.textHotelRate); 
       rssHolder.rssHotelAddress = (TextView) view 
         .findViewById(R.id.textHotelDesc); 
       // rssHolder.rssHotelRating = (TextView) 
       // view.findViewById(R.id.textHotelRating); 
       rssHolder.rating_hotel = (RatingBar) view 
         .findViewById(R.id.rateHotelImage); 

       view.setTag(rssHolder); 

      } else { 
       rssHolder = (RssHolder) view.getTag(); 

      } 
      final RSSFeed_SelectedHotelResult rssFeed = rssFeedLst 
        .get(position); 

      rssHolder.rssTitleView.setText(rssFeed.getName()); 
      imageLoader.DisplayImage(rssFeed.getHotel_image(), 
        rssHolder.rssImagHotel); 
      imageLoader.DisplayImage_rating(rssFeed.getHote_rate_image(), 
        rssHolder.rssImageHotelRate); 

      rssHolder.rssHotelPrice.setText("Avg. $" + rssFeed.getHotel_price() 
        + "/Night"); 

      rssHolder.rssHotelAddress.setText(rssFeed.getHotel_desc()); 
      rssHolder.rating_hotel.setRating(Float.valueOf(rssFeed 
        .getHotel_rate())); 

      rssHolder.iv_add.setOnClickListener(new OnClickListener() { 

       @Override 
       public void onClick(View v) { 
        // TODO Auto-generated method stub 

        try { 
         if (!mypos.contains(position + "")) { 
          mypos.add(position + ""); 
          Toast.makeText(HotelListActivity.this, 
            "Added Position::" + position, 1).show(); 
          mypos.add(position + ""); 
          HashMap<String, String> detailHash = new HashMap<String, String>(); 
          detailHash.put("position", position + ""); 
          detailHash.put("city", rssFeed.getCity()); 
          detailHash.put("name", rssFeed.getName()); 
          detailHash.put("dest_id", rssFeed.getDest_id()); 
          detailHash.put("rate_img", 
            rssFeed.getHote_rate_image()); 
          detailHash.put("desc", rssFeed.getHotel_desc()); 
          detailHash.put("id", rssFeed.getHotel_id()); 
          detailHash.put("img", rssFeed.getHotel_image()); 
          detailHash.put("price", rssFeed.getHotel_price()); 
          detailHash.put("rate", rssFeed.getHotel_rate()); 
          Consts.shortListedHotels.add(detailHash); 
          rssHolder.iv_add 
            .setBackgroundResource(R.drawable.fill); 

         } else { 
          rssHolder.iv_add 
            .setBackgroundResource(R.drawable.plus12); 
          Toast.makeText(HotelListActivity.this, 
            "Removed postion::" + position, 1).show(); 
          mypos.remove(position + ""); 

          Consts.shortListedHotels.remove(position - 1); 

         } 
        } catch (IndexOutOfBoundsException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 
        System.out 
          .println("::::::::::::My data in side hotel List activity:::::::::;" 
            + position 
            + "" 
            + rssFeed.getName() 
            + "\n" 
            + rssFeed.getHotel_price()); 

        /* 
        * RSSFeed_SelectedHotelResult rssFeed1 = rssFeedLst 
        * .get(position); 
        */ 

       } 
      }); 

      return view; 
     } 
    } 

    class RssHolder { 
     TextView rssTitleView; 
     ImageView rssImagHotel; 
     ImageView rssImageHotelRate; 
     ImageView iv_add; 
     // TextView rssHotelRating; 
     RatingBar rating_hotel; 
     TextView rssHotelPrice; 
     TextView rssHotelAddress; 
     TextView rssMultiple_resultCity; 

    } 
+1

'Недопустимый индекс 1, размер 1' Если размер ** 1 **, Вы можете только удалить элемент ** 0 **. ** Пункт 1 не существует **. –

+0

Я не получаю это сэр. Не могли бы вы изменить мой код или еще? Спасибо за ответ как можно быстрее. – user3819148

+0

использовать 'position-1' вместо' position' –

ответ

0

попробовать, как эта надежда, что поможет вам,

if(Consts.shortListedHotels != null && Consts.shortListedHotels.size() > 0){ 
    Consts.shortListedHotels.remove(position); 
} 
+0

изменили код в соответствии с вашим, но то же самое происходит .. :( – user3819148