I tried to change my code this way. There is still a problem. I tried to check for empty rows but even then I've got this exception error.
Maybe the problem is in my way of dealing with those two cursors (second cursor is in another) On May 26, 10:18 am, Kostya Vasilyev <[email protected]> wrote: > 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

