java.lang.IndexOutOfBoundsException:无效指数7,大小为7 [英] java.lang.IndexOutOfBoundsException: Invalid index 7, size is 7
本文介绍了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_horizontal_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:机器人=http://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屋!
查看全文