My misstake! I didn't remove cursor.moveToFirst(); So that must have been the problem all the time. It does return -1. After move to first its 0.
Works fine now! //André On Feb 10, 1:22 pm, Kostya Vasilyev <kmans...@gmail.com> wrote: > Interesting. > > The docs specifically say that query() returns "A Cursor object, which > is positioned before the first entry." You can test by calling > cursor.getPosition(), it should be "-1". > > Are you moving the cursor *before* that processing loop? (calling any > move() methods?) > > If you're not, then that looks to be a side effect of using a row limit. > > -- Kostya > > 10.02.2011 15:00, André пишет: > > > > > > > > > > > Thanks Kostya, > > > I did as you suggested and it looks much better. > > For my question though I got the same problem when using your code. > > But I tried adding: > > String item1 = cursor.getString(index1); > > String item2 = cursor.getString(index2); > > > before while(cursor.moveToNext()){ > > as well as in it. And then it works fine. I guess it skips the first > > post in cursor when I call moveToNext in while. And it probably did > > the same in my old code. > > > //André > > > On Feb 10, 12:18 pm, Kostya Vasilyev<kmans...@gmail.com> wrote: > >> This for loop looks really strange: > > >> for(cursor.moveToFirst(); cursor.moveToNext(); cursor.isAfterLast()) > > >> The condition for "isAfterLast" should be inverted. > > >> Also don't iterate twice and call getColumnIndex for each row, nether of > >> those is necessary. Something like this should work: > > >> cursor = ... > >> if (cursor != null) { > >> int index1 = cursor.getColumnIndex(...); > >> int index2 = cursor.getColumnIndex(...); > > >> while (cursor.moveToNext()) { > >> String item1 = cursor.getString(index1); > >> String item2 = cursor.getString(index2); > >> .... > > >> } > >> } > > >> Other than that, step through in the debugger, see what values you're > >> storing and getting. > > >> Perhaps the top entry somehow has "time" set to NULL, so it doesn't sort > >> properly. You can check this by changing your sort to be "_ID DESC" (the > >> inverse of insertion order) and checking the time value you get back. > > >> -- Kostya > > >> 10.02.2011 13:54, André пишет: > > >>> I have a listview that gets it's posts from a database. I want the ten > >>> latest entries sorted by the time they where added to the database. > >>> This works, but it always skips the first post until a newer one is > >>> added. What could I be doing wrong? > >>> For this I use the following code: > >>> public Cursor fetchAll() { > >>> Cursor mCursor = mDb.query(_TABLE, new String[] {_ROWID, > >>> _NAME, _TEXT, _TIME}, null, null, null, null, _TIME + " DESC", " > >>> 10"); > >>> return mCursor; > >>> } > >>> Cursor cursor = db.fetchAll(); > >>> startManagingCursor(cursor); > >>> ArrayList strings = new ArrayList(); > >>> for(cursor.moveToFirst(); cursor.moveToNext(); cursor.isAfterLast()) { > >>> String name = cursor.getString(cursor.getColumnIndex(db._NAME)); > >>> strings.add(name); > >>> } > >>> String[] mNames = (String[]) strings.toArray(new > >>> String[strings.size()]); > >>> ArrayList strings1 = new ArrayList(); > >>> for(cursor.moveToFirst(); cursor.moveToNext();cursor.isAfterLast()) > >>> { > >>> String name = > >>> cursor.getString(cursor.getColumnIndex(db._TEXT)); > >>> strings1.add(name); > >>> } > >>> String[] mPath = (String[]) strings1.toArray(new > >>> String[strings1.size()]); > >>> // André > >> -- > >> Kostya Vasilyev -- WiFi Manager + pretty widget > >> --http://kmansoft.wordpress.com > > -- > Kostya Vasilyev -- WiFi Manager + pretty widget > --http://kmansoft.wordpress.com -- You received this message because you are subscribed to the Google Groups "Android Developers" group. To post to this group, send email to android-developers@googlegroups.com To unsubscribe from this group, send email to android-developers+unsubscr...@googlegroups.com For more options, visit this group at http://groups.google.com/group/android-developers?hl=en