Android学习——SQLite游戏玩家管理案例
SQLite游戏玩家管理案例
功能设计
根据我们要展示的数据,设计一个排行榜后台管理功能包括:
1、显示游戏玩家列表,按分数降序
2、管理员可手动修改每个玩家的数据
3、管理员可单击后单独查看一个玩家的数据
4、管理员可删除-一个玩家的数据(实际应用中不会存在真正删除功能,刪除也是修改数据状态而已)
功能实现
定义元数据库类:GAMEMetaData和表结构数据内部类GamePlayer
元数据库
package com.example.playermanager.db;
import android.provider.BaseColumns;
//数据库元数据
public final class GameMetaData {
private GameMetaData(){}
public static abstract class GamePlayer implements BaseColumns{
public static final String TABLE_NAME="gameplayer";
public static final String PLAYER="player";
public static final String SCORE="score";
public static final String LEVEL="level";
}
}
表结构数据内部类
package com.example.playermanager.entity;
//玩家实体类
public class GamePlayer {
private int id;
private String player;
private int score;
private int level;
public GamePlayer(int id, String player, int score, int level) {
this.id = id;
this.player = player;
this.score = score;
this.level = level;
}
public GamePlayer( String player, int score, int level) {
this.player = player;
this.score = score;
this.level = level;
}
public GamePlayer() {
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getPlayer() {
return player;
}
public void setPlayer(String player) {
this.player = player;
}
public int getScore() {
return score;
}
public void setScore(int score) {
this.score = score;
}
public int getLevel() {
return level;
}
public void setLevel(int level) {
this.level = level;
}
@Override
public String toString() {
return "GamePlayer{"+
"id="+id+
",player='"+player+"\'"+
",score='"+score+"\'"+
",level='"+level+"\'"+
"}";
}
}
定义数据库操作类DatabaseAdapter和数据库帮手类DatabaseHelper
数据库操作类
package com.example.playermanager.db;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import com.example.playermanager.entity.GamePlayer;
import java.util.ArrayList;
//数据库工具类
public class DatabaseAdapter {
private DatabaseHelper databaseHelper;
public DatabaseAdapter(Context context){
databaseHelper=new DatabaseHelper(context);
}
//添加操作
public void add(GamePlayer gamePlayer){
SQLiteDatabase db=databaseHelper.getWritableDatabase();
String sql="insert into gameplayer(player,score,level) values(?,?,?)";
Object[] arg={gamePlayer.getPlayer(),gamePlayer.getScore(),gamePlayer.getLevel()};
db.execSQL(sql,arg);
db.close();
}
//删除操作
public void delete(int id){
SQLiteDatabase db=databaseHelper.getWritableDatabase();
String sql="delete from gameplayer where _id=?";
Object[] args={id};
db.execSQL(sql,args);
db.close();
}
//修改操作
public void update(GamePlayer gamePlayer){
SQLiteDatabase db=databaseHelper.getWritableDatabase();
String sql="update gameplayer set player=?,score=?,level=? where _id=?";
Object[] args={gamePlayer.getPlayer(),gamePlayer.getScore(),gamePlayer.getLevel(),gamePlayer.getId()};
db.execSQL(sql,args);
db.close();
}
//条件查询
public GamePlayer findById(int id){
SQLiteDatabase db=databaseHelper.getReadableDatabase();
String sql="select _id,player,score,level from gameplayer where _id=?";
Cursor c=db.rawQuery(sql,new String[]{String.valueOf(id)});
GamePlayer gamePlayer=null;
if (c.moveToNext()){
gamePlayer=new GamePlayer();
gamePlayer.setId(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer._ID)));
gamePlayer.setPlayer(c.getString(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.PLAYER)));
gamePlayer.setScore(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.SCORE)));
gamePlayer.setLevel(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.LEVEL)));
}
c.close();
db.close();
return gamePlayer;
}
//全部查询
public ArrayList<GamePlayer> findAll(){
SQLiteDatabase db=databaseHelper.getReadableDatabase();
String sql="select _id,player,score,level from gameplayer";
Cursor c=db.rawQuery(sql,null);
ArrayList<GamePlayer> gamePlayers=new ArrayList<>();
GamePlayer gamePlayer=null;
while (c.moveToNext()){
gamePlayer=new GamePlayer();
gamePlayer.setId(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer._ID)));
gamePlayer.setPlayer(c.getString(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.PLAYER)));
gamePlayer.setScore(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.SCORE)));
gamePlayer.setLevel(c.getInt(c.getColumnIndexOrThrow(GameMetaData.GamePlayer.LEVEL)));
gamePlayers.add(gamePlayer);
}
c.close();
db.close();
return gamePlayers;
}
public int getCount(){
int count=0;
String sql="select count(_id) from gameplayer";
SQLiteDatabase db=databaseHelper.getReadableDatabase();
Cursor c=db.rawQuery(sql,null);
c.moveToFirst();
count=c.getInt(0);
c.close();
db.close();
return count;
}
}
数据库帮手类
package com.example.playermanager.db;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.print.PrinterId;
public class DatabaseHelper extends SQLiteOpenHelper {
private static final String DB_NAME="game.db";
private static final int VERSION=1;
private static final String CREATE_TABLE_PLAYER="create table if not exists gameplayer("+
"_id integer primary key autoincrement,"+
"player text,score integer,level integer)";
private static final String DROP_TABLE_PLAYER="drop table if exists gameplayer";
public DatabaseHelper(Context context) {
super(context, DB_NAME, null, VERSION);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_TABLE_PLAYER);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL(DROP_TABLE_PLAYER);
db.execSQL(CREATE_TABLE_PLAYER);
}
}
GamePlayerFragment用于显示(列表)
package com.example.playermanager.fragments;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.app.Fragment;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
import com.example.playermanager.R;
import com.example.playermanager.entity.GamePlayer;
import java.util.ArrayList;
/**
* 列表界面
* A simple {@link Fragment} subclass.
*/
public class GamePlayerFragment extends Fragment {
private GamePlayerFragmentListener gamePlayerFragmentListener;
private GamePlayerAdapter gamePlayerAdapter;
//回调接口
public static interface GamePlayerFragmentListener{
public void showGamePlayFragment();
public void showUpdateFragment(int id);
public void delete(int id);
public ArrayList<GamePlayer> findAll();
}
public GamePlayerFragment() {
// Required empty public constructor
}
//实例化
public static GamePlayerFragment newInstance(){
GamePlayerFragment gamePlayerFragment=new GamePlayerFragment();
return gamePlayerFragment;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try {
gamePlayerFragmentListener= (GamePlayerFragmentListener) activity;
}catch (ClassCastException e){
e.printStackTrace();
}
}
//实例化
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
ArrayList<GamePlayer> gamePlayers=gamePlayerFragmentListener.findAll();
gamePlayerAdapter=new GamePlayerAdapter(getActivity(),gamePlayers);
}
//解除添加,销毁时调用
@Override
public void onDetach() {
super.onDetach();
gamePlayerFragmentListener=null;
}
public void changedData(){
gamePlayerAdapter.setGamePlayers(gamePlayerFragmentListener.findAll());
gamePlayerAdapter.notifyDataSetChanged();
}
//创建菜单项
@Override
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.setHeaderTitle("修改/删除");
menu.setHeaderIcon(android.R.drawable.ic_menu_edit);
getActivity().getMenuInflater().inflate(R.menu.list_context_menu,menu);
}
//菜单选择事件
@Override
public boolean onContextItemSelected(MenuItem item) {
switch (item.getItemId()){
case R.id.delete_menu:
AdapterView.AdapterContextMenuInfo info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
TextView textView_id=info.targetView.findViewById(R.id.textView_id);
int id=Integer.parseInt(textView_id.getText().toString());
gamePlayerFragmentListener.delete(id);
changedData();
break;
case R.id.update_menu:
info= (AdapterView.AdapterContextMenuInfo) item.getMenuInfo();
textView_id=info.targetView.findViewById(R.id.textView_id);
id=Integer.parseInt(textView_id.getText().toString());
gamePlayerFragmentListener.showUpdateFragment(id);
break;
}
return super.onContextItemSelected(item);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_game_player,container,false);
ListView listView=view.findViewById(R.id.listView);
registerForContextMenu(listView);//上下文菜单
listView.setAdapter(gamePlayerAdapter);
return view;
}
private static class GamePlayerAdapter extends BaseAdapter{
private Context context;
private ArrayList<GamePlayer> gamePlayers;
public void setGamePlayers(ArrayList<GamePlayer> gamePlayers){
this.gamePlayers=gamePlayers;
}
public GamePlayerAdapter(Context context,ArrayList<GamePlayer> gamePlayers){
this.context=context;
this.gamePlayers=gamePlayers;
}
@Override
public int getCount() {
return gamePlayers.size();
}
@Override
public Object getItem(int position) {
return gamePlayers.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder vh=null;
if (convertView==null){
convertView=LayoutInflater.from(context).inflate(R.layout.game_player_layout,null);
vh=new ViewHolder();
vh.tv_id=convertView.findViewById(R.id.textView_id);
vh.tv_player=convertView.findViewById(R.id.textView_player);
vh.tv_score=convertView.findViewById(R.id.textView_score);
vh.tv_level=convertView.findViewById(R.id.textView_level);
convertView.setTag(vh);
}else {
vh= (ViewHolder) convertView.getTag();
}
GamePlayer gamePlayer=gamePlayers.get(position);
vh.tv_id.setText(String.valueOf(gamePlayer.getId()));
vh.tv_player.setText(gamePlayer.getPlayer());
vh.tv_score.setText(String.valueOf(gamePlayer.getScore()));
vh.tv_level.setText(String.valueOf(gamePlayer.getLevel()));
return convertView;
}
private static class ViewHolder{
TextView tv_id;
TextView tv_player;
TextView tv_score;
TextView tv_level;
}
}
}
菜单项list_context_menu
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/delete_menu"
android:orderInCategory="100" android:title="删除"
android:icon="@android:drawable/ic_menu_delete"/>
<item android:id="@+id/update_menu"
android:orderInCategory="200" android:title="修改"
android:icon="@android:drawable/ic_menu_edit"/>
</menu>
对应布局文件
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.GamePlayerFragment">
<ListView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/listView"
android:layout_gravity="center"
android:choiceMode="none"/>
</FrameLayout>
listView显示内容
<?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">
<TextView
android:id="@+id/textView_id"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="id"
android:textSize="24sp"/>
<TextView
android:id="@+id/textView_player"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="玩家"
android:textSize="24sp"/>
<TextView
android:id="@+id/textView_score"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="分数"
android:textSize="24sp"/>
<TextView
android:id="@+id/textView_level"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="关卡数"
android:textSize="24sp"/>
</LinearLayout>
AddFragment中使用Dialog来添加玩家
package com.example.playermanager.fragments;
import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.DialogFragment;
import android.app.FragmentManager;
import android.content.DialogInterface;
import android.os.Bundle;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.EditText;
import com.example.playermanager.R;
import com.example.playermanager.entity.GamePlayer;
/**
* 添加界面
* A simple {@link Fragment} subclass.
*/
public class AddFragment extends DialogFragment {
private AddFragmentListener addFragmentListener;//定义接口
//回调接口
public static interface AddFragmentListener{
public void add(GamePlayer gamePlayer);
}
public AddFragment() {
// Required empty public constructor
}
//实例化
public static AddFragment newInstance(){
AddFragment addFragment=new AddFragment();
return addFragment;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try{
addFragmentListener= (AddFragmentListener) activity;
}catch (ClassCastException e){
e.printStackTrace();
}
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
final View view=LayoutInflater.from(getActivity()).inflate(R.layout.fragment_add,null);
return new AlertDialog.Builder(getActivity())
.setIcon(android.R.drawable.ic_menu_add)
.setView(view)
.setTitle("新增游戏玩家")
.setPositiveButton("保存",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
EditText et_player=view.findViewById(R.id.editText_player);
EditText et_score=view.findViewById(R.id.editText_score);
EditText et_level=view.findViewById(R.id.editText_level);
GamePlayer gamePlayer=new GamePlayer();
gamePlayer.setPlayer(et_player.getText().toString());
gamePlayer.setScore(Integer.parseInt(et_score.getText().toString()));
gamePlayer.setLevel(Integer.parseInt(et_level.getText().toString()));
addFragmentListener.add(gamePlayer);
dialog.dismiss();
}
}
)
.setNegativeButton("取消",
new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
}
)
.create();
}
}
对应布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.AddFragment">
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:hint="请输入玩家姓名..."
android:ems="10"
android:layout_alignParentTop="true"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:id="@+id/editText_player"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="请输入玩家分数..."
android:ems="10"
android:layout_below="@id/editText_player"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:id="@+id/editText_score"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="number"
android:hint="请输入玩家关卡数..."
android:ems="10"
android:layout_below="@id/editText_score"
android:layout_alignParentStart="true"
android:layout_alignParentLeft="true"
android:layout_alignParentEnd="true"
android:layout_alignParentRight="true"
android:id="@+id/editText_level"/>
</RelativeLayout>
UpdateFragment显示一个玩家数据并可以修改
package com.example.playermanager.fragments;
import android.app.Activity;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import com.example.playermanager.R;
import com.example.playermanager.entity.GamePlayer;
/**
* 更新界面
* A simple {@link Fragment} subclass.
*/
public class UpdataFragment extends Fragment implements View.OnClickListener {
private EditText et_player,et_score,et_level;
private UpdataFragmentListener updataFragmentListener;
private GamePlayer gamePlayer;
//回调接口
public static interface UpdataFragmentListener{
public void update(GamePlayer gamePlayer);
public GamePlayer findById(int id);
}
public UpdataFragment() {
// Required empty public constructor
}
//实例化
public static UpdataFragment newInstance(int id){
UpdataFragment updataFragment=new UpdataFragment();
Bundle b=new Bundle();
b.putInt("id",id);
updataFragment.setArguments(b);
return updataFragment;
}
@Override
public void onAttach(Activity activity) {
super.onAttach(activity);
try{
updataFragmentListener= (UpdataFragmentListener) activity;
}catch (ClassCastException e){
e.printStackTrace();
}
}
@Override
public void onDetach() {
super.onDetach();
updataFragmentListener=null;
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int id=getArguments().getInt("id");
gamePlayer=updataFragmentListener.findById(id);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view=inflater.inflate(R.layout.fragment_updata,container,false);
TextView tv_id=view.findViewById(R.id.text_id2);
et_player=view.findViewById(R.id.edit_player);
et_score=view.findViewById(R.id.edit_score);
et_level=view.findViewById(R.id.edit_level);
Button button_save=view.findViewById(R.id.button_save);
Button button_cancel=view.findViewById(R.id.button_cancel);
button_save.setOnClickListener(this);
button_cancel.setOnClickListener(this);
tv_id.setText(String.valueOf(gamePlayer.getId()));
et_player.setText(gamePlayer.getPlayer());
et_score.setText(String.valueOf(gamePlayer.getScore()));
et_level.setText(String.valueOf(gamePlayer.getLevel()));
return view;
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.button_save:
save();
break;
case R.id.button_cancel:
getActivity().getFragmentManager().popBackStack();
break;
}
}
private void save(){
GamePlayer g=new GamePlayer();
g.setId(gamePlayer.getId());
g.setPlayer(et_player.getText().toString());
g.setScore(Integer.parseInt(et_score.getText().toString()));
g.setLevel(Integer.parseInt(et_level.getText().toString()));
updataFragmentListener.update(g);
getActivity().getFragmentManager().popBackStack();
}
}
对应布局文件
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".fragments.UpdataFragment">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:id="@+id/linear_id">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_id"
android:text="ID:"
android:textSize="24sp"/>
<TextView
android:id="@+id/text_id2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textSize="24sp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/linear_id"
android:orientation="horizontal"
android:id="@+id/linear_player">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_player"
android:text="玩家:"
android:textSize="24sp"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_player"
android:inputType="textPersonName"
android:hint="请输入玩家名称..."
android:textSize="24sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/linear_player"
android:orientation="horizontal"
android:id="@+id/linear_score">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_score"
android:text="分数:"
android:textSize="24sp"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_score"
android:inputType="number"
android:hint="请输入玩家分数..."
android:textSize="24sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_below="@id/linear_score"
android:orientation="horizontal"
android:id="@+id/linear_level">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text_level"
android:text="关卡:"
android:textSize="24sp"/>
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/edit_level"
android:inputType="number"
android:hint="请输入关卡数..."
android:textSize="24sp"/>
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:orientation="horizontal"
android:id="@+id/linear_button">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/button_cancel"
android:background="@drawable/button_bg"
android:text="取消"
android:textSize="24sp"
android:layout_weight="1"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:background="@drawable/button_bg"
android:id="@+id/button_save"
android:text="保存"
android:textSize="24sp"
android:layout_weight="1"/>
</LinearLayout>
<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/text"
android:text="提示:您可以修改玩家、分数和关卡,序号不能修改,修改完成后点击保存按钮即可,否则点击取消按钮返回列表界面。"
android:textColor="@android:color/darker_gray"
android:textSize="18sp"
android:layout_above="@id/linear_button"/>
</RelativeLayout>
MainActivityd调用方法
package com.example.playermanager;
import android.app.FragmentTransaction;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuItem;
import com.example.playermanager.db.DatabaseAdapter;
import com.example.playermanager.entity.GamePlayer;
import com.example.playermanager.fragments.AddFragment;
import com.example.playermanager.fragments.GamePlayerFragment;
import com.example.playermanager.fragments.UpdataFragment;
import java.util.ArrayList;
//程序入口
public class MainActivity extends AppCompatActivity implements AddFragment.AddFragmentListener, GamePlayerFragment.GamePlayerFragmentListener, UpdataFragment.UpdataFragmentListener {
private GamePlayerFragment gamePlayerFragment;
private UpdataFragment updataFragment;
private DatabaseAdapter databaseAdapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
databaseAdapter=new DatabaseAdapter(this);
showGamePlayFragment();
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode==KeyEvent.KEYCODE_BACK){
if (getFragmentManager().getBackStackEntryCount()==1){
finish();
return true;
}else {
getFragmentManager().popBackStack();
return true;
}
}
return super.onKeyDown(keyCode, event);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu_main,menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
int id=item.getItemId();
switch (id){
case R.id.add:
AddFragment createGamePlayerFragment=AddFragment.newInstance();
createGamePlayerFragment.show(getFragmentManager(),null);
break;
}
return super.onOptionsItemSelected(item);
}
@Override
public void add(GamePlayer gamePlayer) {
databaseAdapter.add(gamePlayer);
gamePlayerFragment.changedData();
}
@Override
public void showGamePlayFragment() {
gamePlayerFragment=GamePlayerFragment.newInstance();
FragmentTransaction fragmentTransaction=getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_layout,gamePlayerFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
@Override
public void showUpdateFragment(int id) {
updataFragment=UpdataFragment.newInstance(id);
FragmentTransaction fragmentTransaction=getFragmentManager().beginTransaction();
fragmentTransaction.replace(R.id.main_layout,updataFragment);
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
}
@Override
public void delete(int id) {
databaseAdapter.delete(id);
gamePlayerFragment.changedData();
}
@Override
public ArrayList<GamePlayer> findAll() {
return databaseAdapter.findAll();
}
@Override
public void update(GamePlayer gamePlayer) {
databaseAdapter.update(gamePlayer);
gamePlayerFragment.changedData();
}
@Override
public GamePlayer findById(int id) {
return databaseAdapter.findById(id);
}
}