游戏排名界面就一个listview
同时我为每个item自定义了view
ranklist.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical" ><ListView
        android:layout_width="match_parent"android:layout_height="match_parent"android:id="@+id/rankList" ></ListView></LinearLayout>

自定义的itemview(两个TextView)
rankitem.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="40dp"android:orientation="horizontal" ><TextView
        android:id="@+id/txtUser"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:textSize="20sp"android:singleLine="true"android:gravity="right|center" /><TextView
        android:id="@+id/txtScore"android:layout_width="0dp"android:layout_weight="1"android:layout_height="match_parent"android:textSize="20sp"android:singleLine="true"android:gravity="left|center" /></LinearLayout>

RankListActivity.java

package com.example.gamedemo;import java.util.ArrayList;
import java.util.List;import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.TextView;import db.Ranking;
import db.User;public class RankListActivity extends Activity {private ArrayList<User> userList = new ArrayList<User>();private ListView rankList;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.ranklist);//从数据库中读取数据Ranking r = new Ranking(this);userList = r.getData();rankList = (ListView) findViewById(R.id.rankList);ArrayAdapterDemo adapter = new ArrayAdapterDemo(RankListActivity.this,0, 0, userList);rankList.setAdapter(adapter);}/*** 重写返回键* (non-Javadoc)* @see android.app.Activity#onKeyDown(int, android.view.KeyEvent)*/@Overridepublic boolean onKeyDown(int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {  setResult(RESULT_OK);finish();return true;  } else  return super.onKeyDown(keyCode, event);  }/*** 自定义adapter。需要用到listview的优化*/public class ArrayAdapterDemo extends ArrayAdapter<User> {private Wrapper wrapper;public ArrayAdapterDemo(Context context, int resource,int textViewResourceId, List<User> objects) {super(context, 0, 0, objects);}@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {convertView = getLayoutInflater().inflate(R.layout.rankitem,null);wrapper = new Wrapper();wrapper.tvName = (TextView) convertView.findViewById(R.id.txtUser);wrapper.tvScore = (TextView) convertView.findViewById(R.id.txtScore);convertView.setTag(wrapper);} else {wrapper = (Wrapper) convertView.getTag();}wrapper.tvName.setText(userList.get(position).getUserName());wrapper.tvScore.setText("得分" + userList.get(position).getUserScore());return convertView;}}class Wrapper { // 持有者模式private TextView tvName, tvScore;}
}

实现也不难。接下来我贴出数据库代码和User类
User.java

package db;public class User {private String userName;private int userScore;public User(String userName, int userScore) {this.userName = userName;this.userScore = userScore;}public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public int getUserScore() {return userScore;}public void setUserScore(int userScore) {this.userScore = userScore;}
}

数据库
DBOpenHelper.java

package db;import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;//创建数据库、数据表
public class DBOpenHelper extends SQLiteOpenHelper {private static final int VERSION = 1;private static final String DBNAME = "game.db";public DBOpenHelper(Context context) {super(context, DBNAME, null, VERSION);}@Overridepublic void onCreate(SQLiteDatabase db) {db.execSQL("create table ranking( username varchar(50), userscore integer)");}@Override// 以便数据库版本更新public void onUpgrade(SQLiteDatabase arg0, int arg1, int arg2) {}
}

Ranking.java

package db;import java.util.ArrayList;import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;public class Ranking {private DBOpenHelper helper;private SQLiteDatabase db;public Ranking(Context context) {helper = new DBOpenHelper(context);db = helper.getWritableDatabase();}public ArrayList<User> getData() {ArrayList<User> list = new ArrayList<User>();Cursor cursor = db.rawQuery("select * from ranking", null);while (cursor.moveToNext()) {list.add(new User(cursor.getString(cursor.getColumnIndex("username")), cursor.getInt(cursor.getColumnIndex("userscore"))));}return list;}public void insert(User user) {db.execSQL("insert into ranking (username, userscore) values (?,?)",new Object[] { user.getUserName(), user.getUserScore() });}
}

下一篇就是最难得了

手把手教你写《雷神》游戏(四)相关推荐

  1. windows脚本编制引擎_手把手教你写脚本引擎(一)

    手把手教你写脚本引擎(一)--挑选语言的特性 陈梓瀚 华南理工大学软件本科05级 脚本引擎的作用在于增强程序的可配置性.从游戏到管理系统都需要脚本,甚至连工业级产品的Office.3DS Max以及A ...

  2. 手把手教你写一个生成对抗网络

    成对抗网络代码全解析, 详细代码解析(TensorFlow, numpy, matplotlib, scipy) 那么,什么是 GANs? 用 Ian Goodfellow 自己的话来说: " ...

  3. 手把手教你写网站:Python WEB开发技术实战

    摘要:本文详细介绍了Python WEB开发的基础入门.以一个博客站点的开发为例讲解了基于Django框架开发WEB站点的全过程.通过本文的学习可以快速掌握基于Django的Python WEB的开发 ...

  4. 手把手教你写专利申请书/如何申请专利

    摘要 小前言 (一)申请前的准备工作     1.申请前查询     2.其他方面的考虑     3.申请文件准备 (二)填写专利申请系列文档     1.实际操作步骤     2.具体操作     ...

  5. socket 长链接linux,手把手教你写 Socket 长连接

    原标题:手把手教你写 Socket 长连接 8点43分打卡 就是真爱 本文转载自公众号 玉刚说,由玉刚说写作平台[1]提供写作赞助 原作者:水晶虾饺[2] 版权声明:本文版权归微信公众号玉刚说所有,未 ...

  6. 手把手教你写批处理-批处理的介绍

    标题:手把手教你写批处理-批处理的介绍 作者:佚名 编者:Climbing 出处:中国 DOS 联盟之联合 DOS 论坛 题注:willsort 日期:2004-09-21 ------------- ...

  7. 手把手教你写专利申请书·如何申请专利

    摘要 小前言 (一)申请前的准备工作     1.申请前查询     2.其他方面的考虑     3.申请文件准备 (二)填写专利申请系列文档     1.实际操作步骤     2.具体操作     ...

  8. (转)手把手教你写专利申请书•如何申请专利

    如何写好专利申请?由于很多专利申请人都是第一次申请,因此,可能有一种神秘和些许恐惧.本文写的是如何写专利申请书,手把手教你写专利申请并提供申请专利时的注意事项,相关参考并有相关专利申请书样本可供下载. ...

  9. 如何去选取第一批要阅读的论文?_【手把手教你写论文】第二期:文献阅读进行时...

    点击蓝字 关注我们 无论是本科阶段.硕士阶段还是博士阶段,甚至是工作后的职称评定,大家可能都面临着论文写作和发表的需求,需要去完成各种形式的论文,比如毕业论文.期刊论文.会议论文等等. 自从2019年 ...

  10. 手把手教你写专利申请书/怎样申请专利

    手把手教你写专利申请书·怎样申请专利 摘要 小前言 (一)申请前的准备工作     1.申请前查询     2.其它方面的考虑     3.申请文件准备 (二)填写专利申请系列文档     1.实际操 ...

最新文章

  1. 贪心:Burst Balloons 最少次数完成射击气球
  2. 编译phonetisaurus时configure找不到openfst的问题解决
  3. 前端——解决微信网页清除缓存的方法
  4. MySQL(mysql 5.7)用户密码的管理
  5. ext4 文件系统新特性
  6. 【笔记】微软OneNote使用笔记,OneNote备份问题
  7. Apache Kafka-初体验Kafka(03)-Centos7下搭建kafka集群
  8. STM32F1x 逆向工程初步
  9. java背景图片加上组件_关于 java swing组件加背景图片的问题
  10. 肿瘤坏死因子(TNF)阻断剂治疗幼年型银屑病关节炎: 有效吗
  11. 基于bootstrap_登陆页面
  12. java 蓝桥杯算法训练 数组查找及替换
  13. Altium AD20修改原理图右下角标题栏,自定义标题栏,添加图片、标题、页码、时间、作者
  14. 【C++笔记】函数的用法:函数的默认参数、占位参数、函数重载
  15. Spring Boot 如何快速改造老项目?原来这么爽
  16. LeetCode分类-前400题
  17. python爬虫做灰产_python爬虫
  18. 计算机技术与园林,计算机技术在园林绿化设计中的应用
  19. YOLO算法v1-v3原理通俗理解
  20. 香港黄金配角吴孟达去世,80后程序员以轮播图来悼念达叔,达叔一路走好!

热门文章

  1. markdown无法显示图片的问题
  2. 在linux上安装微信/QQ/TIM/迅雷等
  3. 1.3 nuclei sdk Makefile分析
  4. java关注微信公众号登录
  5. python画一棵树的心理测试_【心理测试】画树测试:一棵树读你的人生
  6. Debug 武侠世界
  7. Android实现 刮刮乐效果
  8. 计算机科学与技术社会实践活动,计算机科学与技术学院学生开展“食品安全行”社会实践活动...
  9. 导弹发射各项参数计算涉及计算机应用,计算机应用基础10.doc
  10. win10+黑苹果 单硬盘 双系统 超简单安装 一看就会