2015-01-02 2 views
0

У меня проблема с лидирующей доской, которую я создал, чтобы отображать 10 лучших игроков с наивысшими баллами, но вместо этого он проигнорирует самый низкий первый в обратном порядке, я попытался изменить выбранный статус и версию базы данных и это не сработало, никто не знает, как это решить? здесь является лидер доска деятельности:лидирующая доска, которая отображает 10 лучших игроков?

package com.example.tabsnav; 
import java.io.ByteArrayOutputStream; 
import java.util.ArrayList; 
import java.util.List; 

import library.DBhelper; 
import library.DBhelper.DatabaseHelper; 
import android.app.Activity; 
import android.graphics.Bitmap; 
import android.graphics.BitmapFactory; 
import android.graphics.drawable.BitmapDrawable; 
import android.os.Bundle; 
import android.os.Handler; 
import android.util.Log; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 

public class LeaderBoard extends Activity { 
ArrayList<Leaders> imageArry = new ArrayList<Leaders>(); 
ImageAdapter adapter; 
EditText etcomment1; 
//Button b1; 
DBhelper db; 
TextView etname1; 
ListView dataList; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.leader_board); 




} 

    @Override 
protected void onPause() { 
    // TODO Auto-generated method stub 
    super.onPause(); 
    adapter.clear(); 
} 
@Override 
protected void onResume() { 
// TODO Auto-generated method stub 
super.onResume(); 
db = new DBhelper(this); 
db.open(); 


// Reading all comments from database 

List<Leaders> contacts = db.getAllContactsFromAndroid(); 

for (Leaders cn : contacts) { 
    String log = "ID:" + cn.getID() + " Name: " + cn.getName() 
      + " ,Image: " + cn.getImage(); 

    // Writing Contacts to log 
    Log.d("Result: ", log); 
    //add contacts data in arrayList 
    imageArry.add(cn); 

} 
adapter = new ImageAdapter(this, R.layout.leader_list_adapter, 
     imageArry); 
dataList = (ListView) findViewById(R.id.list); 
dataList.setAdapter(adapter); 
}} 

моей прибудет функцию в базе данных:

// Getting All Contacts From Android 
public List<Leaders> getAllContactsFromAndroid() { 
    List<Leaders> contactList = new ArrayList<Leaders>(); 
    // Select All Query 
    Cursor cursor=null; 
    cursor = mDb.rawQuery("SELECT * FROM Game DESC ORDER by score LIMIT 10", 
      null); 
    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      Leaders contact = new Leaders(); 
      contact.setName(cursor.getString(cursor.getColumnIndex(G_FIRSTNAME))); 
      contact.setImage(cursor.getBlob(cursor.getColumnIndex(G_PHOTO))); 
      contact.setComment(cursor.getInt(cursor.getColumnIndex(G_SCORE))); 
      // Adding contact to list 
      contactList.add(contact); 
     } while (cursor.moveToNext()); 
    } 

Лидер класс, чтобы установить и получить данные:

package com.example.tabsnav; 

public class Leaders { 

// private variables 
int _id; 
String _name; 
byte[] _image; 
int _comment; 

// Empty constructor 
public Leaders() { 

} 
// constructor 
    public Leaders(int keyId, String name, byte[] image,int comment) { 
     this._id = keyId; 
     this._name = name; 
     this._image = image; 
     this._comment=comment; 

    } 

// constructor 
public Leaders(int keyId, String name, byte[] image) { 
    this._id = keyId; 
    this._name = name; 
    this._image = image; 

} 

// constructor 
public Leaders(String contactID, String name, byte[] image) { 
    this._name = name; 
    this._image = image; 

} 

// constructor 
public Leaders(String name, byte[] image) { 
    this._name = name; 
    this._image = image; 
} 


// getting ID 
public int getID() { 
    return this._id; 
} 

// setting id 
public void setID(int keyId) { 
    this._id = keyId; 
} 

// getting name 
public String getName() { 
    return this._name; 
} 

// setting name 
public void setName(String name) { 
    this._name = name; 
} 

// getting phone number 
public byte[] getImage() { 
    return this._image; 
} 

// setting phone number 
public void setImage(byte[] image) { 
    this._image = image; 
} 

// getting comment 
public int getComment() { 
    return this._comment; 
} 

// setting comment 
public void setComment(int comment) { 
    this._comment = comment; 
} 
} 

вот снимок экрана лидера: as you see it displays it in the wrong order

+0

Попробуйте 'cursor = mDb.rawQuery (« SELECT TOP (10) * FROM Game ORDER by score DESC », null);' Также, если приложение все еще сбой, отправьте журнал ошибок, чтобы мы могли видеть, что пошло не так –

+0

Ваша ошибка в том, что столбец 'fname' не существует в таблице' questions'. Это правильное имя столбца? Это правильное имя таблицы? –

+0

Я ошибся, что константа таблицы была Game_TABLE по-прежнему дает ошибку курсора –

ответ

1

Попробуйте это: mDb.query (DATABASE_TABLE, новый String [] {KEY_NAME, KEY_SCORE}, NULL, NULL, NULL, NULL, KEY_SCORE + "DESC", "LIMIT 10") ;

+0

Мне нужно поставить все константы столбцов в параметр столбца? –

+0

Нет, но можете, если хотите. Я думаю, в вашем случае это имя и оценка, которую вы хотите. – IronBlossom

+0

также дает исключение времени выполнения, неспособное возобновить активность! –

1

Ваш SQLite-запрос неверен. Попробуйте что-нибудь, как показано ниже:

cursor = mDb.rawQuery("SELECT * FROM Game ORDER BY score DESC LIMIT 10", 
      null); 
+0

не работает и приложение вылетает. RunTime Exception. Невозможно возобновить активность. –

Смежные вопросы