Рекорд активности - PullRequest
       0

Рекорд активности

1 голос
/ 20 декабря 2011

Я довольно новичок в андроид-программировании.Можете ли вы помочь мне, что мне нужно, чтобы показать таблицу местных рекордов в этом упражнении?Мне нужно создать несколько TextViews в нем и в XML?Где я могу найти несколько примеров, чтобы увидеть, как это работает?

Рекорды

import game.main.R;
import android.app.Activity;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.widget.TextView;

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


    }
}

HighscoreList class

package game.objectsmain;

import android.content.Context;
import android.content.SharedPreferences;

public class HighScoresList { 
private SharedPreferences preferences; 
private String names[]; 
private long score[]; 

    public HighScoresList(Context context) 
    { 
        preferences = context.getSharedPreferences("Highscore", 0); 
        names = new String[5]; 
        score = new long[5]; 

        for (int x=0; x<5; x++) 
        { 
            names[x] = preferences.getString("name"+x, "-"); 
            score[x] = preferences.getLong("score"+x, 0); 
        } 

    } 

    public String getName(int x) 
    { 
        //get the name of the x-th position in the Highscore-List 
        return names[x]; 
    } 

    public long getScore(int x) 
    { 
        //get the score of the x-th position in the Highscore-List 
        return score[x]; 
    } 

    public boolean inHighscore(long score) 
    { 
    //test, if the score is in the Highscore-List 
        int position; 
        for (position=0; position<10 && this.score[position] > score; position++); 

        if (position==5) return false; 
        return true; 
    } 

    public boolean addScore(String name, long score) 
    { 
    //add the score with the name to the Highscore-List 
        int position; 
        for (position=0; position<10 && this.score[position] > score; position++); 

        if (position==5) return false; 

        for (int x=4; x > position; x--) 
        { 
            names[x]=names[x-1]; 
            this.score[x]=this.score[x-1]; 
        } 

        this.names[position] = new String(name); 
        this.score[position] = score; 

        SharedPreferences.Editor editor = preferences.edit(); 
        for (int x=0; x<5; x++) 
        { 
            editor.putString("name"+x, this.names[x]); 
            editor.putLong("score"+x, this.score[x]); 
        } 
        editor.commit(); 
        return true; 

    } 

}

PS Кстати, можно ли использовать общие настройки илииспользовать базу данных sqlite намного лучше?

Ответы [ 2 ]

1 голос
/ 20 декабря 2011

Если вы хотите, чтобы ваши рекорды были доступны в Интернете, взгляните на OpenFeint .

Теперь, если это просто локальная таблица,

Там нет ничегонеправильно с использованием eithor SharedPreferences или базы данных SQLite.

Могу сказать, что использование базы данных SQLite будет намного проще, чем SharedPreferences.(Почему? Поскольку вам не придется вручную сортировать, проверять, проверять наличие дубликатов в случае баз данных ... Простой запрос / оператор может мгновенно перечислять 10 лучших, усекать старые оценки и т. Д.

Для отображениясвою таблицу рекордов, используйте ListActivity и пользовательский адаптер списка для отображения каждой записи. Здесь хороший урок для того же.

0 голосов
/ 20 декабря 2011

Да, вам нужны TextViews. Вы можете добавить их в свой файл R.layout.highscores или программно. Есть сотни примеров, только Google на «Android TextView example».

Кроме того, можно использовать общие настройки, но sqlite db намного быстрее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...