1

在我的应用程序中,我想在单击下一步和返回按钮时左右导航并更改 textView 值。但是当索引大于项目数时,我会收到强制关闭错误。这是我的代码。

    String[] seperated = imag;

        count_image = seperated.length-1;

        pager = (ViewPager) findViewById(R.id.pager);
        pager.setAdapter(new ImagePagerAdapter(seperated));

        pager.setCurrentItem(pagerPosition);

        options = new DisplayImageOptions.Builder()

        .showImageForEmptyUri(R.drawable.ic_launcher)

        .cacheOnDisc()

        .imageScaleType(ImageScaleType.IN_SAMPLE_INT)

        .build();

        pager.setOffscreenPageLimit(3);



        @Override

    public void onClick(View v) {

        // TODO Auto-generated method stub


        switch (v.getId()){

        case R.id.boutton_slide_droite:


            focus_image = pager.getCurrentItem();

            //get current image index 

            focus_image++;


            //move to next record

            position++;

            System.out.println("focus_image_up:"+focus_image);


            if(focus_image<count_image){

                if(focus_image>=count_image){

                    focus_image=0;
                    pagerPosition=0;

                }else {


                    pager.setCurrentItem(focus_image);

                    disable_progress=true; 

                    System.out.println("focus_image up if ++: 

"+focus_image);



                        text_num.setText("No. "+PostList.get(focus_image).getNum());
                        text_name.setText(PostList.get(focus_image).getNom());

                        text_team.setText(PostList.get(focus_image).getTeam());
                        text_date.setText(PostList.get(focus_image).getNaissance());

                    if 
(PostList.get(position).getNBVictoire().equals("1"))

                        text_victoires.setText("Victoire: "+PostList.get(focus_image).getNBVictoire());

                    else 
                        text_victoires.setText("Victoires: "+ PostList.get(focus_image).getNBVictoire());


                    if (PostList.get(focus_image).getNBCourse().equals("1"))

                        text_nomb.setText("Nombre de course: "+PostList.get(focus_image).getNBCourse());

                    else 

                        text_nomb.setText("Nombre de courses: "+PostList.get(focus_image).getNBCourse());

                }

            }else {

                pagerPosition=count_image;

                focus_image=count_image;
        }


            break;




         case R.id.boutton_slide_gauche:

             focus_image = pager.getCurrentItem();

             focus_image--;

            //move to previous record

            position--;


            if (focus_image>0){



                if (focus_image<=count_image) {

                    System.out.println("focus_image_down: if "+focus_image);


                    pager.setCurrentItem(focus_image);

                    disable_progress=true;

                    text_num.setText("No. "+PostList.get(focus_image).getNum());
                    text_name.setText(PostList.get(focus_image).getNom());

                    text_team.setText(PostList.get(focus_image).getTeam());

                    text_date.setText(PostList.get(focus_image).getNaissance());


                    if (PostList.get(focus_image).getNBVictoire().equals("1"))

                            text_victoires.setText("Victoire: "+PostList.get(focus_image).getNBVictoire());

                    else 

                        text_victoires.setText("Victoires: "+ PostList.get(focus_image).getNBVictoire());


                    if (PostList.get(position).getNBCourse().equals("1"))

                        text_nomb.setText("Nombre de course: "+PostList.get(focus_image).getNBCourse());
                    else 
                        text_nomb.setText("Nombre de courses: "+PostList.get(focus_image).getNBCourse());


                }else {


                    pager.setCurrentItem(focus_image);

                    disable_progress=true;

                    text_num.setText("No. "+PostList.get(focus_image).getNum());


text_name.setText(PostList.get(focus_image).getNom());


text_team.setText(PostList.get(focus_image).getTeam());


text_date.setText(PostList.get(focus_image).getNaissance());


                    if 

(PostList.get(focus_image).getNBVictoire().equals("1"))

                        text_victoires.setText("Victoire: "+PostList.get(focus_image).getNBVictoire());

                    else 


                        text_victoires.setText("Victoires: "+ PostList.get(focus_image).getNBVictoire());


                    if 

(PostList.get(position).getNBCourse().equals("1"))


                        text_nomb.setText("Nombre de course: "+PostList.get(focus_image).getNBCourse());


                    else 


                        text_nomb.setText("Nombre de courses: "+PostList.get(focus_image).getNBCourse());



                }


            }else {

                focus_image=0;
                pagerPosition=0;

            }


            break;
}   

错误是

java.lang.IndexOutOfBoundsException:索引 3 无效,大小为 3

4

2 回答 2

3

java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3足以找出错误。没有其他要求。

如果大小是3,则只能访问直到索引24如果要访问索引,请将数组/数组列表的大小增加到3

于 2013-02-27T06:27:58.860 回答
0
holder.button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Cursor cursor=FavouriteActivity.sqLiteHelper.getData("SELECT id FROM FAVOURITE");
                    ArrayList<Integer> arrID=new ArrayList<Integer>();
                    while(cursor.moveToNext()){
                        arrID.add(cursor.getInt(0));
                    }

                    FavouriteActivity.sqLiteHelper.deleteData(arrID.get(position));
//                    FavouriteActivity.adapter.notifyDataSetChanged();
                    Toast.makeText(context, "Delete " , Toast.LENGTH_SHORT).show();}

            });
            row.setTag(holder);
        }
        else {
            holder=(ViewHolder) row.getTag();
        }
        Model_Favourite model_favourite=favouritelist.get(position);
        byte[] favouriteimage = model_favourite.getImage();
        Bitmap bitmap= BitmapFactory.decodeByteArray(favouriteimage,0,favouriteimage.length);
        holder.imageView.setImageBitmap(bitmap);
        return row;











logcat:error
 java.lang.IndexOutOfBoundsException: Invalid index 3, size is 3
        at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:255)
        at java.util.ArrayList.get(ArrayList.java:308)
        at com.vbs.ladieskurti.FavouriteListAdapter$1.onClick(FavouriteListAdapter.java:79)
        at android.view.View.performClick(View.java:5721)
        at android.view.View$PerformClick.run(View.java:22620)
        at android.os.Handler.handleCallback(Handler.java:739)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:148)
        at android.app.ActivityThread.main(ActivityThread.java:7406)
        at java.lang.reflect.Method.invoke(Native Method)
于 2020-01-10T05:55:51.167 回答