我对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数据库好多了?
答案 0 :(得分:1)
如果您希望在互联网上提供您的高分,请查看OpenFeint。
现在,如果它只是一个本地表,
使用eithor SharedPreferences
或SQLite数据库没有任何问题。
我可以告诉你,使用SQLite数据库比SharedPreferences要容易得多。 (为什么?因为在数据库的情况下你不必手动排序,验证,检查重复...一个简单的查询/语句可以列出前十名,截断旧的分数等等。
要显示高分表,请使用ListActivity
和自定义列表适配器显示每个条目。 Here是一个很好的相关教程。
答案 1 :(得分:0)
是的,你需要TextViews。您可以在R.layout.highscores XML中添加它们,也可以以编程方式添加它们。有数百个例子,只有谷歌在“Android TextView示例”。
此外,可以使用共享首选项,但sqlite db要快得多。