java.lang.IndexOutOfBoundsException:无效指数7,大小为7 [英] java.lang.IndexOutOfBoundsException: Invalid index 7, size is 7

查看:277
本文介绍了java.lang.IndexOutOfBoundsException:无效指数7,大小为7的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想实现视图寻呼机,在我看来,寻呼机图片来自服务器,我能够显示,并滚动,但是当我在最后的影像达到它显示错误,应用程序得到了碰撞,以下是我的代码片段code

 公共类Test_Pager延伸活动{
私人字符串strtd;
的String [] imgStr;
ImageView的ImageView的;
ArrayList的<串GT; userImgArrayList;
的String [] myURLs;
/ *国家列表* /
JSONArray COUNTRY_LIST = NULL;
私人的ServiceHandler SH;
私人字符串jsonStr;
私人的JSONObject jsonObj;
私人字符串user_img;
私人字符串user_pro;
私人静态字符串PROFILE_VIEW_URL =;私有静态最后弦乐USER_IMG =product_images;
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    // TODO自动生成方法存根
    super.onCreate(savedInstanceState);
    的setContentView(R.layout.test_pagerss);    userImgArrayList = getIntent()getStringArrayListExtra(user_images);
    ViewPager viewPager =(ViewPager)findViewById(R.id.view_pager);
       ImageAdapter适配器=新ImageAdapter(本);
       viewPager.setAdapter(适配器);     ImageView的=(ImageView的)findViewById(R.id.full_image_view);
     PROFILE_VIEW_URL =;
    。StrictMode.ThreadPolicy政策=新StrictMode.ThreadPolicy.Builder()permitAll()建();
    StrictMode.setThreadPolicy(政策);
    SH =新的ServiceHandler();        //制作到URL的请求和响应得到
        jsonStr = sh.makeServiceCall(PROFILE_VIEW_URL,ServiceHandler.GET);        Log.d(回应:,>中+ jsonStr);     尝试{
         jsonObj =新的JSONObject(jsonStr);
             / * proview_business = jsonObj.getString(PROFILE_VIEW_BUSINESS);
             proview_subcat = jsonObj.getString(PROFILE_VIEW_SUB_CATAGORY);
             proview_mainpro = jsonObj.getString(PROFILE_VIEW_MAINPRODUCTS);
             proview_expr = jsonObj.getString(PROFILE_VIEW_EXPERIENCE);
             proview_cmpname = jsonObj.getString(PROFILE_VIEW_COMPANYNAME);
             proview_website = jsonObj.getString(PROFILE_VIEW_WEBSITE); * /            // user_img = jsonObj.getString(USER_IMG);            user_img = jsonObj.getString(USER_IMG);
            user_img =;
            userImgArrayList =新的ArrayList<串GT;(); //声明userImgArrayList全球如ArrayList<串GT; userImgArrayList;
            JSONArray picarray = jsonObj.getJSONArray(USER_IMG);
            的for(int i = 0; I< picarray.length();我++)
            {
                user_img = picarray.getString(ⅰ);
                userImgArrayList.add(user_img);
                Log.d(mylog,亲CURENT PIC =+ user_img);
            }
     }赶上(JSONException E){
         e.printStackTrace();
     }}
公共类ImageAdapter扩展PagerAdapter {
     上下文语境;
      ImageAdapter(上下文的背景下)
     {
     this.context =背景;
     }
      @覆盖
      公众诠释的getCount(){
      返回USER_IMG.length();
      }      @覆盖
        公共无效destroyItem(View容器,INT位置,Object对象){
             ((ViewPager)容器).removeView((查看)对象);
        }
     @覆盖
     公共布尔isViewFromObject(查看视图,Object对象){
     返回查看==((ImageView的)对象);
     }     @覆盖
        公共对象instantiateItem(ViewGroup中的容器,INT位置){
            ImageView的ImageView的=新ImageView的(上下文);
            INT填充= context.getResources()。getDimensionPixelSize(
                    R.dimen.activity_horizo​​ntal_margin);
            imageView.setPadding(填充,填充,填充,填充);
            //imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            //Picasso.with(context).load(userImgArrayList.get(position)).into(imageView);
            Picasso.with(上下文).load(userImgArrayList.get(位置))调整(200,200).into(ImageView的)。            / *的for(int i = 0; I< myURLs.length;我++)
            {                尝试{
                    URL =新的URL(myURLs [I]);
                }赶上(MalformedURLException的E){
                    // TODO自动生成catch块
                    e.printStackTrace();
                }                尝试{
                    BMP = BitmapFactory.de codeStream(url.openConnection()的getInputStream());
                }赶上(IOException异常五){
                    // TODO自动生成catch块
                    e.printStackTrace();
                }
                 imageView.setImageBitmap(BMP);
            }
            * /
            // imageView.setImageURI(Uri.parse(imgStr [位置]));
            ((ViewPager)容器).addView(ImageView的,0);
            返回ImageView的;
        }
     }  }

与myXML

 < RelativeLayout的
         机器人:layout_height =WRAP_CONTENT
         机器人:layout_width =WRAP_CONTENT
         机器人:背景=@机器人:彩色/白
         的xmlns:机器人=htt​​p://schemas.android.com/apk/res/android>       <滚动型
           机器人:layout_height =match_parent
           机器人:layout_width =match_parent
            机器人:layout_below =@ + ID / LNR
            机器人:fillViewport =真                >           <的LinearLayout
          机器人:layout_width =match_parent
           机器人:layout_height =match_parent
           机器人:方向=垂直>            <的LinearLayout
                机器人:layout_height =WRAP_CONTENT
                机器人:layout_width =WRAP_CONTENT
            机器人:方向=垂直
                 >
          < android.support.v4.view.ViewPager
      机器人:ID =@ + ID / view_pager
      机器人:layout_width =WRAP_CONTENT
      机器人:layout_height =WRAP_CONTENT/>< ImageView的机器人:ID =@ + ID / full_image_view
        机器人:layout_width =WRAP_CONTENT
        机器人:layout_height =WRAP_CONTENT/>< / LinearLayout中> <的LinearLayout
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_width =FILL_PARENT
    机器人:方向=垂直
    机器人:背景=@绘制/二部
    机器人:layout_marginLeft =5DP
    机器人:layout_marginRight =5DP
    机器人:layout_marginTop =5DP
    >
      < TableLayout
        机器人:layout_width =match_parent
        机器人:layout_height =match_parent
        机器人:shrinkColumns =*机器人:stretchColumns =*>
       <的TableRow
                        机器人:layout_height =WRAP_CONTENT
                        机器人:layout_width =WRAP_CONTENT
                        机器人:重力=CENTER_HORIZONTAL>        <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT
            机器人:文字=产品名称
            机器人:layout_marginLeft =5DP
            机器人:文字颜色=@机器人:彩色/黑白
            />
        <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT
            机器人:ID =@ + ID / txtageprofile            机器人:文字颜色=@机器人:彩色/黑白
            机器人:layout_marginLeft =5DP
            />< /&的TableRow GT;
        <的TableRow
                        机器人:layout_height =WRAP_CONTENT
                        机器人:layout_width =WRAP_CONTENT
                        机器人:重力=CENTER_HORIZONTAL
                        机器人:paddingTop =5DP
                        >
         <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT
            机器人:文字=code
            机器人:layout_marginLeft =5DP
            机器人:文字颜色=@机器人:彩色/黑白
            />
        <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT            机器人:ID =@ + ID / txtheightprofile          机器人:文字颜色=@机器人:彩色/黑白
          机器人:layout_marginLeft =5DP
            />< /&的TableRow GT;
         <的TableRow
                        机器人:layout_height =WRAP_CONTENT
                        机器人:layout_width =WRAP_CONTENT
                        机器人:重力=CENTER_HORIZONTAL
                        机器人:paddingTop =5DP
                        >
         <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT
            机器人:文字=购买率
            机器人:layout_marginLeft =5DP
            机器人:文字颜色=@机器人:彩色/黑白
            />
        <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT            机器人:ID =@ + ID / txtmrgprofile            机器人:文字颜色=@机器人:彩色/黑白
            机器人:layout_marginLeft =5DP
            />< /&的TableRow GT;
          <的TableRow
                        机器人:layout_height =WRAP_CONTENT
                        机器人:layout_width =WRAP_CONTENT
                        机器人:重力=CENTER_HORIZONTAL
                        机器人:paddingTop =5DP>
         <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT
            机器人:文字=重量
            机器人:layout_marginLeft =5DP
            机器人:文字颜色=@机器人:彩色/黑白
            />         <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT            机器人:ID =@ + ID / txtworkingprofile            机器人:文字颜色=@机器人:彩色/黑白
            机器人:layout_marginLeft =5DP
            />< /&的TableRow GT;
           <的TableRow
                        机器人:layout_height =WRAP_CONTENT
                        机器人:layout_width =WRAP_CONTENT
                        机器人:重力=CENTER_HORIZONTAL
                        机器人:paddingTop =5DP
                        >
         <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT
            机器人:文字=销售速度
            机器人:layout_marginLeft =5DP
            机器人:文字颜色=@机器人:彩色/黑白
            />         <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =FILL_PARENT
            机器人:ID =@ + ID / txtplaceprofile
            机器人:文字颜色=@机器人:彩色/黑白
            机器人:layout_marginLeft =5DP
            />< /&的TableRow GT;
            < / TableLayout>
            < / LinearLayout中>
           <的LinearLayout
    机器人:layout_height =WRAP_CONTENT
    机器人:layout_width =FILL_PARENT
    机器人:方向=垂直
    机器人:背景=@绘制/二部
    机器人:layout_marginLeft =5DP
    机器人:layout_marginRight =5DP
    机器人:layout_marginTop =5DP
    >
            <的TextView
            机器人:layout_height =WRAP_CONTENT
            机器人:layout_width =WRAP_CONTENT
            机器人:layout_gravity =center_vertical |权            机器人:ID =@ + ID / txteatprofile
            机器人:文字颜色=@机器人:彩色/黑白
            机器人:layout_marginLeft =5DP
           机器人:layout_marginRight =5DP
            />
            < / LinearLayout中>
      < / LinearLayout中>
      < /滚动型>
      < / RelativeLayout的>


解决方案

USER_IMG.length(); 返回字符串的长度(product_images的字符数)。应返回的数据集,而不是大小。更改

  @覆盖
 公众诠释的getCount(){
      返回USER_IMG.length();
 }

  @覆盖
 公众诠释的getCount(){
      如果(userImgArrayList == NULL){
         返回0;
      }
      返回userImgArrayList.size();
 }

I am trying to implement view pager,in my view pager images comes from server,I am able to display and scroll but when i reach at last image it shows error and app got crash,following is my snippet code

   public class Test_Pager extends Activity{


private String strtd;
String[] imgStr;
ImageView imageView;
ArrayList<String> userImgArrayList;
String[] myURLs;


/*country list*/
JSONArray country_list=null;
private ServiceHandler sh;
private String jsonStr;
private JSONObject jsonObj;
private String user_img;
private String user_pro;
private static String PROFILE_VIEW_URL = "";

private static final String USER_IMG="product_images";


@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.test_pagerss);

    userImgArrayList = getIntent().getStringArrayListExtra("user_images");
    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
       ImageAdapter adapter = new ImageAdapter(this);
       viewPager.setAdapter(adapter);

     imageView = (ImageView) findViewById(R.id.full_image_view);


     PROFILE_VIEW_URL="";
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
    StrictMode.setThreadPolicy(policy);
    sh = new ServiceHandler();

        // Making a request to url and getting response
        jsonStr = sh.makeServiceCall(PROFILE_VIEW_URL, ServiceHandler.GET);

        Log.d("Response: ", "> " + jsonStr);

     try {
         jsonObj = new JSONObject(jsonStr);


             /*proview_business = jsonObj.getString(PROFILE_VIEW_BUSINESS);
             proview_subcat = jsonObj.getString(PROFILE_VIEW_SUB_CATAGORY);
             proview_mainpro = jsonObj.getString(PROFILE_VIEW_MAINPRODUCTS);
             proview_expr = jsonObj.getString(PROFILE_VIEW_EXPERIENCE);
             proview_cmpname = jsonObj.getString(PROFILE_VIEW_COMPANYNAME);
             proview_website = jsonObj.getString(PROFILE_VIEW_WEBSITE);*/

            // user_img=jsonObj.getString(USER_IMG);



            user_img=jsonObj.getString(USER_IMG);
            user_img = "";
            userImgArrayList = new ArrayList<String>();//declare userImgArrayList globally like ArrayList<String> userImgArrayList;
            JSONArray picarray = jsonObj.getJSONArray(USER_IMG);
            for(int i=0;i< picarray.length();i++)
            {
                user_img = picarray.getString(i);
                userImgArrayList.add(user_img);
                Log.d("mylog", "curent  pro pic  = " + user_img);
            }


     } catch (JSONException e) {
         e.printStackTrace();
     }

}
public class ImageAdapter extends PagerAdapter {
     Context context;
      ImageAdapter(Context context)
     {
     this.context=context;
     }
      @Override
      public int getCount() {
      return USER_IMG.length();
      }

      @Override
        public void destroyItem(View container, int position, Object object) {
             ((ViewPager) container).removeView((View) object);
        }
     @Override
     public boolean isViewFromObject(View view, Object object) {
     return view == ((ImageView) object);
     }

     @Override
        public Object instantiateItem(ViewGroup container, int position) {
            ImageView imageView = new ImageView(context);
            int padding = context.getResources().getDimensionPixelSize(
                    R.dimen.activity_horizontal_margin);
            imageView.setPadding(padding, padding, padding, padding);
            //imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            //Picasso.with(context).load(userImgArrayList.get(position)).into(imageView);
            Picasso.with(context).load(userImgArrayList.get(position)).resize(200, 200) .into(imageView);

            /*for(int i=0; i<myURLs.length;i++)
            { 

                try {
                    url = new URL(myURLs[i]);
                } catch (MalformedURLException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }

                try {
                    bmp = BitmapFactory.decodeStream(url.openConnection().getInputStream());
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }
                 imageView.setImageBitmap(bmp);
            }
            */
            // imageView.setImageURI(Uri.parse(imgStr[position]));
            ((ViewPager) container).addView(imageView, 0);
            return imageView;
        }
     }

  }

Myxml

        <RelativeLayout 
         android:layout_height="wrap_content"
         android:layout_width="wrap_content"
         android:background="@android:color/white"
         xmlns:android="http://schemas.android.com/apk/res/android">







       <ScrollView 
           android:layout_height="match_parent"
           android:layout_width="match_parent"
            android:layout_below="@+id/lnr"
            android:fillViewport="true"

                >

           <LinearLayout 
          android:layout_width="match_parent"
           android:layout_height="match_parent"
           android:orientation="vertical" >

            <LinearLayout 
                android:layout_height="wrap_content"
                android:layout_width="wrap_content"
            android:orientation="vertical"
                 >
          <android.support.v4.view.ViewPager
      android:id="@+id/view_pager"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content" />

<ImageView android:id="@+id/full_image_view"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/></LinearLayout>

 <LinearLayout 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/secondpart"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="5dp"
    >
      <TableLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:shrinkColumns="*"  android:stretchColumns="*" >
       <TableRow
                        android:layout_height="wrap_content"
                        android:layout_width="wrap_content"
                        android:gravity="center_horizontal">

        <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Product Name"
            android:layout_marginLeft="5dp"
            android:textColor="@android:color/black"
            />


        <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:id="@+id/txtageprofile"

            android:textColor="@android:color/black"
            android:layout_marginLeft="5dp"
            /></TableRow>
        <TableRow
                        android:layout_height="wrap_content"
                        android:layout_width="wrap_content"
                        android:gravity="center_horizontal"
                        android:paddingTop="5dp"
                        >
         <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Code"
            android:layout_marginLeft="5dp"
            android:textColor="@android:color/black"
            />


        <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"

            android:id="@+id/txtheightprofile"

          android:textColor="@android:color/black"
          android:layout_marginLeft="5dp"
            /></TableRow>
         <TableRow
                        android:layout_height="wrap_content"
                        android:layout_width="wrap_content"
                        android:gravity="center_horizontal"
                        android:paddingTop="5dp"
                        >
         <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Purchase Rate"
            android:layout_marginLeft="5dp"
            android:textColor="@android:color/black"
            />


        <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"

            android:id="@+id/txtmrgprofile"

            android:textColor="@android:color/black"
            android:layout_marginLeft="5dp"
            /></TableRow>
          <TableRow
                        android:layout_height="wrap_content"
                        android:layout_width="wrap_content"
                        android:gravity="center_horizontal"
                        android:paddingTop="5dp">
         <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Weight"
            android:layout_marginLeft="5dp"
            android:textColor="@android:color/black"
            />

         <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"

            android:id="@+id/txtworkingprofile"

            android:textColor="@android:color/black"
            android:layout_marginLeft="5dp"
            /></TableRow>
           <TableRow
                        android:layout_height="wrap_content"
                        android:layout_width="wrap_content"
                        android:gravity="center_horizontal"
                        android:paddingTop="5dp"
                        >
         <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:text="Sales Rate"
            android:layout_marginLeft="5dp"
            android:textColor="@android:color/black"
            />

         <TextView 
            android:layout_height="wrap_content"
            android:layout_width="fill_parent"
            android:id="@+id/txtplaceprofile"
            android:textColor="@android:color/black"
            android:layout_marginLeft="5dp"
            /></TableRow>
            </TableLayout>
            </LinearLayout>
           <LinearLayout 
    android:layout_height="wrap_content"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:background="@drawable/secondpart"
    android:layout_marginLeft="5dp"
    android:layout_marginRight="5dp"
    android:layout_marginTop="5dp"
    >
            <TextView 
            android:layout_height="wrap_content"
            android:layout_width="wrap_content"
            android:layout_gravity="center_vertical|right"

            android:id="@+id/txteatprofile"
            android:textColor="@android:color/black"
            android:layout_marginLeft="5dp"
           android:layout_marginRight="5dp"
            />
            </LinearLayout>


      </LinearLayout>
      </ScrollView>
      </RelativeLayout>

解决方案

USER_IMG.length(); returns the length of the String (the number of chars of "product_images"). You should return the size of the data set instead. Change

 @Override
 public int getCount() {
      return USER_IMG.length();
 }

to

 @Override
 public int getCount() {
      if (userImgArrayList == null) {
         return 0;
      } 
      return userImgArrayList.size();
 }

这篇关于java.lang.IndexOutOfBoundsException:无效指数7,大小为7的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆