Java 在Android中尝试从arrayList中删除项时,IndexOutOfBounds异常

Java 在Android中尝试从arrayList中删除项时,IndexOutOfBounds异常,java,android,arraylist,indexoutofboundsexception,Java,Android,Arraylist,Indexoutofboundsexception,我有一个Android活动,我正在将listItem的位置添加到arrayList中,如果需要,还将删除(选择/删除)。因此,当我要删除上一个索引时,它会显示: 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.

我有一个Android活动,我正在将listItem的位置添加到arrayList中,如果需要,还将删除(选择/删除)。因此,当我要删除上一个索引时,它会显示:

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)
.我试过了,但运气不好。我的代码如下,请帮我把它缩短。提前谢谢

代码

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;

    }
私有类RssAdapter扩展了ArrayAdapter{
私有列表rssFeedLst;
公共RssAdapter(上下文,int textViewResourceId,
列表rssFeedLst){
super(上下文、textViewResourceId、rssFeedLst);
this.rssFeedLst=rssFeedLst;
布尔addtoShotlist;
}
公共视图getView(最终整型位置,视图转换视图,
视图组(父级){
视图=转换视图;
if(convertView==null){
视图=视图。充气(hotellistativity.this,R.layout.list\u行,
无效);
rssHolder=新的rssHolder();
rssHolder.iv_add=(ImageView)view.findViewById(R.id.iv_add);
rssHolder.rssTitleView=(文本视图)视图
.findviewbyd(R.id.title);
rssHolder.rssImagHotel=(图像视图)视图
.findViewById(R.id.hotelImage);
rssHolder.rssImageHotelRate=(图像视图)视图
.FindViewbyd(R.id.rateHotel2);
rssHolder.rssHotelPrice=(文本视图)视图
.findViewById(R.id.textHotelRate);
rssHolder.rssHotelAddress=(文本视图)视图
.findViewById(R.id.textHotelDesc);
//rssHolder.rssHotelRating=(文本视图)
//view.findViewById(R.id.textHotelRating);
rssHolder.rating_酒店=(RatingBar)视图
.findViewById(R.id.rateHotelImage);
view.setTag(rssHolder);
}否则{
rssHolder=(rssHolder)view.getTag();
}
最终RSSFeed\u选择的酒店结果RSSFeed=rssFeedLst
.获得(职位);
rssHolder.rssTitleView.setText(rssFeed.getName());
imageLoader.DisplayImage(rssFeed.getHotel_image(),
rssHolder.rssImagHotel);
imageLoader.DisplayImage\u rating(rssFeed.getHote\u rate\u image(),
rssHolder.rssImageHotelRate);
rssHolder.rssHotelPrice.setText(“平均$”+rssFeed.getHotel_price()
+“/晚上”);
rssHolder.rssHotelAddress.setText(rssFeed.getHotel_desc());
rssHolder.rating_hotel.setRating(浮动值)(rssFeed
.getHotel_rate());
rssHolder.iv_add.setOnClickListener(新的OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
试一试{
如果(!mypos.包含(位置+“”)){
mypos.add(位置+“”);
Toast.makeText(HotelListActivity.this,
添加的位置::“+位置,1).show();
mypos.add(位置+“”);
HashMap detailHash=新的HashMap();
detailHash.put(“位置”,位置+”);
detailHash.put(“city”,rssFeed.getCity());
detailHash.put(“name”,rssFeed.getName());
detailHash.put(“dest_id”,rssFeed.getDest_id());
detailHash.put(“rate\u 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_添加
.setBackgroundResource(R.可提取填充);
}否则{
rssHolder.iv_添加
.挫折资源(R.drawable.plus12);
Toast.makeText(HotelListActivity.this,
“删除的位置::”+位置,1.show();
mypos.移除(位置+“”);
Consts.shortListedHotels.移除(位置-1);
}
}catch(IndexOutOfBoundsException e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
系统输出
.println(“::::我的数据在侧边酒店列表活动中::::;”
+位置
+ ""
+rssFeed.getName()
+“\n”
+rssFeed.getHotel_price();
/*
*RSSFeed\u选择的酒店结果rssFeed1=rssFeedLst
*.获得(职位);
*/
}
});
返回视图;
}
}
等级RssHolder{
文本视图rstitleview;
ImageView酒店;
ImageView rssImageHotelRate;
ImageView iv_添加;
//文本视图RShotelrating;
拉廷巴尔酒店;
文本视图rssHotelPrice;
TextView rssHotelAddress;
TextView RSM多个结果性;
}
t
if( Consts.shortListedHotels != null && Consts.shortListedHotels.size() > 0){
  Consts.shortListedHotels.remove(position);
}