2016-04-11 19 views
0

Aşağıdaki DB sorgumdan en son 5 sonucu döndüren bir imleç var.Arraylist imleç sorgusuyla düzgün çalışmıyor

public Cursor totaldistance(){ 
    String[] columns = new String[] { DatabaseHelper._ID, DatabaseHelper.DSNM, DatabaseHelper.SDATE }; 
    Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, columns, null, null, null, null, DatabaseHelper._ID + " DESC limit 5"); 
    if (cursor != null) { 
     cursor.moveToFirst(); 
    } 
    return cursor; 
} 

Ardından, döndürülen imleç değerlerini aşağıdaki arraylist'e atayım. Tamam çalışır, arrayList en son db kayıt değerini kaçırır. Örneğin, DB'de 4 değere sahip olabilirim, ancak en son 2. değer arrailistte 0 konumuna atanıyor. İmleç sorgum veya while ifadesinin sorun olup olmadığından emin değilim. Kimse biliyor mu? Teşekkürler!

 List<String> distancearray = new ArrayList<String>(); 
    distancearray.add("0"); 
    distancearray.add("0"); 
    distancearray.add("0"); 
    distancearray.add("0"); 
    distancearray.add("0"); 
    int i = 0; 

    while(DistanceArray.moveToNext()){ 
     String uname = DistanceArray.getString(DistanceArray.getColumnIndex("distance")); 

     distancearray.set(i, uname); 
     i++; 
    } 

Aşağıdaki önerilere dayanarak kodumu güncelledim. Şimdi veritabanından ilk sonuca ulaşılıyor ancak sonraki 4 ile döngü yapmıyor. Arraylistimin altındaki kodu çalıştırdıktan sonra 10,8,6,1,0 okumalı ama gerçek sonuç 10,10,10,10 , 0. İlk elde edilen değeri tekrar ediyor. İşlemi yaparken doğru sonuçları diziye yazarken ne yapabilirim? Teşekkürler!

 List<String> distancearray = new ArrayList<String>(); 
    distancearray.add(0, "0"); 
    distancearray.add(1, "0"); 
    distancearray.add(2, "0"); 
    distancearray.add(3, "0"); 
    distancearray.add(4, "0"); 
    Cursor cursor = dbManager.totaldistance(); 
    do{ 
     String uname = DistanceArray.getString(DistanceArray.getColumnIndex("distance")); 
     distancearray.set(i, uname); 
     Log.i("Graph", "Value i = " + i); 
     Log.i("Graph", "Array value = " + uname); 
     i++; 
    }while ((cursor.moveToNext())); 
+0

DistanceArray nedir burada? –

+0

Arraylist'te saklamak istediğim db kayıtları kullanıcı tarafından girilen mesafe değerleridir. Örneğin, distancearray'a döndürülen sorgulamam 10,8,6,5,0 okumalıdır. Ancak kullanılan dizi 8,6,5,0,0 gösterir. – MarcusRey

+0

İmlecinizi arraylist nüfus kodunda nerede kullanıyorsunuz – Sanjeev

cevap

1

Sana önceki yöntemde moveToFirs() yürütmesini gibi Yani kod

gibi listeye gerektiği görünüyor tüm satırları eklemek için cursor.moveToFirst();

public Cursor totaldistance(){ 
    String[] columns = new String[] { DatabaseHelper._ID, DatabaseHelper.DSNM, DatabaseHelper.SDATE }; 
    Cursor cursor = database.query(DatabaseHelper.TABLE_NAME, columns, null, null, null, null, DatabaseHelper._ID + " DESC limit 5"); 
    if (cursor != null) { 
     // Here you are pointing to the first row of the cursor 
     // you need to add this row content into your list 
     cursor.moveToFirst(); 
    } 
    return cursor; 
} 

çağırma bir satır "kaybetme" olduğunu düşünüyorum

List<String> distancearray = new ArrayList<String>(); 
Cursor cursor = dbManager.totaldistance(); 
do{ 
    distancearray.add(cursor.getString(cursor.getColumnIndex("distance"))); 
}while ((cursor.moveToNext())); 

// Be sure here to have at least the 5 desired elements into the list 
while(distancearray.size() < 5){ 
    distancearray.add("0"); 
} 
+0

Ne demek istediğimi görüyorum, (DistanceArray.moveToNext ilk kaydı atlıyor. Ancak kodumu önerdiğiniz düzeltmeyi nasıl uygulayacağımı bilmiyorum. Önerinizi denedim ama işe yaramadı. Teşekkürler – MarcusRey

+0

@Marcus Güncelleme için güncellememi yaptım – Nirekin

+0

Güncelleme için teşekkürler.Ayrıca yaklaşıyorum ama hala bir sorunum var. Kodumdan görebildiğim için arraylist'i 5 "0" Değerlerle başlatıyorum. Ardından üzerine yazmak istiyorum Sorgu sonuçları ile bu "0" değerleri.Bu yüzden i ++ kullanıyorum.Bu arraylist ve ben daha az 5 değerlere sahip değilse ben sabit bir 5 arsa için yeterli değerler yok benim app çöküyor Değer grafiği.Yeni kod çalışırken bunu nasıl uygulayabileceğimi biliyor musunuz? Teşekkürler! – MarcusRey