i'm having a problem with a leader board that i created to display top 10 players with the highest scores but instead it desplayes the lowest first in reverse order, i've tried to change the select statment and the version of the database and that didn't work any one has any idea how to solve this? here is the Leader-board activity:
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);
}}
my get function in the database:
// 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());
}
Leader Class to set and get data:
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;
}
}
here is a screen shot of the leader board:
Try this: mDb.query(DATABASE_TABLE, new String[] { KEY_NAME, KEY_SCORE}, null, null, null, null,KEY_SCORE+" DESC","LIMIT 10");