Reputation:
I am displaying items from the sqlite in gridview..first time it is displaying items well..After updating the new item into sqlite the new item cant be displayed..
My error log shows as
01-02 10:57:45.497: E/AndroidRuntime(1274): java.lang.IndexOutOfBoundsException: Invalid index 7, size is 7
01-02 10:57:45.497: E/AndroidRuntime(1274): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:251)
01-02 10:57:45.497: E/AndroidRuntime(1274): at java.util.ArrayList.get(ArrayList.java:304)
01-02 10:57:45.497: E/AndroidRuntime(1274): at com.books.bcukbook.Bookicon$ItemsAdapter.getView(Bookicon.java:262)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.AbsListView.obtainView(AbsListView.java:2033)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.GridView.makeAndAddView(GridView.java:1323)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.GridView.makeRow(GridView.java:328)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.GridView.fillDown(GridView.java:281)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.GridView.fillFromTop(GridView.java:403)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.GridView.layoutChildren(GridView.java:1215)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.AbsListView.onLayout(AbsListView.java:1863)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.View.layout(View.java:11278)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.RelativeLayout.onLayout(RelativeLayout.java:925)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.View.layout(View.java:11278)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.View.layout(View.java:11278)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1628)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1486)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.LinearLayout.onLayout(LinearLayout.java:1399)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.View.layout(View.java:11278)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.widget.FrameLayout.onLayout(FrameLayout.java:431)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.View.layout(View.java:11278)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.ViewGroup.layout(ViewGroup.java:4224)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1489)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.view.ViewRootImpl.handleMessage(ViewRootImpl.java:2442)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.os.Handler.dispatchMessage(Handler.java:99)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.os.Looper.loop(Looper.java:137)
01-02 10:57:45.497: E/AndroidRuntime(1274): at android.app.ActivityThread.main(ActivityThread.java:4424)
01-02 10:57:45.497: E/AndroidRuntime(1274): at java.lang.reflect.Method.invokeNative(Native Method)
01-02 10:57:45.497: E/AndroidRuntime(1274): at java.lang.reflect.Method.invoke(Method.java:511)
01-02 10:57:45.497: E/AndroidRuntime(1274): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
01-02 10:57:45.497: E/AndroidRuntime(1274): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
01-02 10:57:45.497: E/AndroidRuntime(1274): at dalvik.system.NativeStart.main(Native Method)
my itemsadapter class is
private class ItemsAdapter extends BaseAdapter implements ListAdapter
{
String[] items;
public ItemsAdapter(Context context,int textViewResourceId,String[] items)
{
this.items = items;
}
public View getView( int POSITION, View convertView,ViewGroup parent)
{
TextView cap = null ;
View view = convertView;
ImageView img = null;
if (view == null)
{
LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.item, null);
}
img = (ImageView) view.findViewById(R.id.image);
Log.i("iiiiii","iiiii");
cap = (TextView) view.findViewById(R.id.caption);
System.err.println("Position of the book is "+mapNames.get(POSITION));
bookTitle=mapNames.get(POSITION);
System.err.println("title of the book is "+bookTitle);
cap.setText(mapNames.get(POSITION));
img.setImageBitmap(BitmapFactory.decodeByteArray(map.get(POSITION), 0, map.get(POSITION).length));
return view;
}
public int getCount()
{
return items.length;
}
public Object getItem(int position)
{
return position;
}
public long getItemId(int position)
{
return position;
}
}
i am tracing the values though and i am getting sqlite data but unable to display that. i am calling this itemsadapter class for displaying in both cases i.e for displaying and after updating.Any idea where i went wrong?
Upvotes: 2
Views: 128
Reputation: 86948
java.lang.IndexOutOfBoundsException: Invalid index 7, size is 7
...
at com.books.bcukbook.Bookicon$ItemsAdapter.getView(Bookicon.java:262)
You are using two different indices. getCount()
is based off of items
:
public int getCount()
{
return items.length;
}
But in getView()
you are using mapNames.get(POSITION)
. Apparently mapNames
only has 7 elements while items
has more...
You should use only use one list to power your adapter.
Upvotes: 1