高分活动

时间:2011-12-20 10:53:13

标签: java android sharedpreferences

我对android编程很新。 你可以帮助我,我需要在这项活动中展示本地高分榜吗? 我需要在它和xml中创建一些TextView吗? 在哪里我可以找到一些例子来看它是如何工作的?

高分活动

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类

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; 

    } 

}

P.S。 btw是否可以使用共享首选项或使用sqlite数据库好多了?

2 个答案:

答案 0 :(得分:1)

如果您希望在互联网上提供您的高分,请查看OpenFeint

现在,如果它只是一个本地表,

使用eithor SharedPreferences或SQLite数据库没有任何问题。

我可以告诉你,使用SQLite数据库比SharedPreferences要容易得多。 (为什么?因为在数据库的情况下你不必手动排序,验证,检查重复...一个简单的查询/语句可以列出前十名,截断旧的分数等等。

要显示高分表,请使用ListActivity和自定义列表适配器显示每个条目。 Here是一个很好的相关教程。

答案 1 :(得分:0)

是的,你需要TextViews。您可以在R.layout.highscores XML中添加它们,也可以以编程方式添加它们。有数百个例子,只有谷歌在“Android TextView示例”。

此外,可以使用共享首选项,但sqlite db要快得多。