A cursor's initial position is -1, right before the first row, so it's quite
enough to do this:
Cursor cursor = ..... query ...
if (cursor != null) {
... get column indices here ....
while (cursor.moveToNext()) {
... get data using the indices here ...
}
cursor.close();
}
Here it's not necessary to use getCount or moveToFirst, or handle the case
of no data in any special way.
-- Kostya
2011/5/26 adek <[email protected]>
> Thanks. But this is strange.
> When I add this condition
>
> if(cursor.getCount() > 0) }
> ...
>
> My ListView is empty. In LogCat everything looks fine.
>
>
>
> On May 26, 9:59 am, Senthil ACS <[email protected]> wrote:
> > Hi,
> >
> > After you get a cursor object from a query, check the count before
> > doing "moveToFirst()".
> >
> > if(cursor.getCount() > 0)
> > {
> > cursor.moveToFirst();
> > ... processing ...
> >
> > }
> >
> > On May 26, 3:12 am, adek <[email protected]> wrote:
> >
> >
> >
> >
> >
> >
> >
> > > Hello,
> >
> > > As a beginner in android java world I need your help. I've got problem
> > > with famous "CursorIndexOutOfBoundsException".
> >
> > > I'm using SQLite db, and I have two cursors, I'm getting some rows
> > > from database.
> > > I need to get some previous values with some conditions with second
> > > cursor (c2) and put these values on ListView.
> >
> > > Code works with one exception:
> > > "android.database.CursorIndexOutOfBoundsException: Index 0 requested,
> > > with a size of 0".
> >
> > > ListView looks OK if I just ignore this exception but I want to fix
> > > it.
> >
> > > I know it is connected to with Cursor. I tried to check some
> > > conditions - it didn't help. Maybe if you could take a look at my code
> > > you find where is the cause.
> >
> > > Code:
> >
> > > public void LoadLogGrid()
> > > {
> > > dbHelper=new DatabaseHelper(this);
> > > try
> > > {
> >
> > > int LogName = (int) spinLog.getSelectedItemId();
> > > Cursor c=dbHelper.getLogByLogID(LogName);
> > > if (c != null) c.moveToFirst();
> > > int count = c.getCount();
> >
> > > if (c.moveToFirst()){
> > > ArrayList<String> mArrayList = new ArrayList<String>();
> >
> > > int i=0;
> > > do {
> >
> > > int sVar1 = c.getInt(c.getColumnIndex("Var1"));
> > > Long sId = (long) c.getInt(c.getColumnIndex("_id"));
> >
> > > Cursor c2=dbHelper.getPrevLogByLogID(LogName,sVar1);
> > > c2.moveToFirst();
> >
> > > if (c2!=null) {
> > > String sPrevOdo =
> c2.getString(c2.getColumnIndex("Odo"));
> > > mArrayList.add(sPrevOdo);
> > > c2.close();
> > > } else {
> > > //stopManagingCursor(c2);
> > > //c2.close();
> > > Log.d("A:", "Something");
> > > }
> >
> > > String [] from=new String
> []{"Date","Col1","Col2","Col3"};
> > > int [] to=new int []
> > > {R.id.logDate,R.id.logCol1,R.id.logCol2,R.id.logCol3,R.id.rowOpt2};
> > > SimpleCursorAdapter sca=new
> > > LogCursorAdapter(this,R.layout.loggridrow,c,from,to,mArrayList);
> > > grid.setAdapter(sca);
> > > registerForContextMenu(grid);
> > > i++;
> >
> > > } while (c.moveToNext());
> >
> > > c.close();
> >
> > > dbHelper.close();
> > > }
> >
> > > }
> > > catch(Exception ex)
> > > {
> > > AlertDialog.Builder b=new AlertDialog.Builder(this);
> > > b.setMessage(ex.toString());
> > > b.show();
> > > }
> >
> > > }
> >
> > > Query in second cursor:
> >
> > > public Cursor getPrevLogByLogID(long LogID, long Var1)
> > > {
> > > SQLiteDatabase db=this.getReadableDatabase();
> > > String[] params=new String[]
> > > {String.valueOf(LogID),String.valueOf(Var1)};
> >
> > > Cursor c2=db.rawQuery("SELECT LogID as _id, Col1 from
> Log WHERE
> > > Col2=? AND Col3<? AND Full=1 ORDER BY Odo DESC", params);
> > > if (c2 != null) { c2.moveToFirst();}
> > > return c2;
> > > }
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to [email protected]
> To unsubscribe from this group, send email to
> [email protected]
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en
>
--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en