heikyoのblog

[Android] SQLiteデータベースを作成して、ListViewで一覧表示する

このエントリーをはてなブックマークに追加
ドカベンの明訓高校五人衆のSQLiteデータベースを作成して、ListViewで一覧表示したいと思う。

まずはデータベースの作成

DatabaseOpenHelper.java


package jp.sample;

 

import android.content.ContentValues;

import android.content.Context;

import android.database.sqlite.SQLiteDatabase;

import android.database.sqlite.SQLiteOpenHelper;

public class DatabaseOpenHelper extends SQLiteOpenHelper {

// データベース名

private static final String DB_NAME = "MEMBER";

// テーブル名

public static final String TABLE_NAME = "member";

// カラム名

public static final String COLUMN_ID = "_id";

public static final String COLUMN_NAME = "name";

public static final String COLUMN_POSITION = "position";

public static final String COLUMN_NUMBER = "number";

//初期投入サンプルデータ

private String[][] datas = new String[][]{

{"山田太郎", "捕手", "2"},

{"岩鬼正美", "三塁手", "5"},

{"里中智", "投手", "1"},

{"殿馬一人", "二塁手", "4"},

{"微笑三太郎", "外野手", "7"}

};

/**

* コンストラクタ

*/
public DatabaseOpenHelper(Context context) {

// 指定したデータベース名が存在しない場合は、新たに作成されonCreate()が呼ばれる

// バージョンを変更するとonUpgrade()が呼ばれる

super(context, DB_NAME, null, 1);

}

/**

* データベースの生成に呼び出されるので、 スキーマの生成を行う

*/

@Override

public void onCreate(SQLiteDatabase db) {

db.beginTransaction();

try{

// テーブルの生成

StringBuilder createSql = new StringBuilder();

createSql.append("create table " + TABLE_NAME + " (");

createSql.append(COLUMN_ID + " integer primary key,");

createSql.append(COLUMN_NAME + " text,");

createSql.append(COLUMN_POSITION + " text,");

createSql.append(COLUMN_NUMBER + " text");

createSql.append(")");

db.execSQL( createSql.toString());

db.setTransactionSuccessful();

} finally {

db.endTransaction();

}

// サンプルデータの投入

db.beginTransaction();

try{

for( String[] data: datas){

ContentValues values = new ContentValues();

values.put(COLUMN_NAME, data[ 0]);

values.put(COLUMN_POSITION, data[ 1]);

values.put(COLUMN_NUMBER, data[ 2]);

db.insert(TABLE_NAME, null, values);

}

db.setTransactionSuccessful();

} finally {

db.endTransaction();

}

}

//データベースの更新

@Override

public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {

}

}


これでデータベースを作成できます。
次に作成したデータベースをListViewに表示させます。(エミュレーターで起動させるのは全部作ってから!!)

MemberList.java

package jp.sample;


import
android.app.Activity;

import android.database.Cursor;

import android.database.sqlite.SQLiteDatabase;

import android.os.Bundle;

import android.widget.ListAdapter;

import android.widget.ListView;

import android.widget.SimpleCursorAdapter;


public
class MemberList extends Activity {

protected SQLiteDatabase db;

protected Cursor cursor;

protected ListAdapter adapter;

protected ListView cigaretteList;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

db = (new DatabaseOpenHelper(this)).getWritableDatabase();

cigaretteList = (ListView)findViewById(R.id.list);

Cursor c = db.query("member", null, null, null, null, null, null);

c.moveToFirst();

cigaretteList.setAdapter(new SimpleCursorAdapter(this

R.layout.list_item,

c, 

new String[] {"name", "position", "number"}, 

new int[] {R.id.name, R.id.position, R.id.number}));

}


最後にxmlファイルです。(2つあります。)

main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<ListView 

android:id="@+id/list"

android:layout_width="fill_parent"

android:layout_height="fill_parent"/>

</LinearLayout>


list_item.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="horizontal"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:padding="8px">

<TextView

android:id="@+id/name"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<TextView

android:id="@+id/position"

android:layout_marginLeft="6px"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

<TextView

android:id="@+id/number"

android:layout_marginLeft="6px"

android:layout_width="wrap_content"

android:layout_height="wrap_content"/>

</LinearLayout>


これでとりあえずデータベースの作成、簡単な利用ができるはず!!

Trackback

Comment

おねがいします! | 2011年03月29日 15:13
[Android] SQLiteデータベースを作成して、ListViewで一覧表示する 。
に記述してある通り、プログラムを組みましたが、エミュレータで実行すると起動しません。
いろいろと変えて試してみましたが、結局起動できずにいます。
「DatabaseOpenHelper.java」と「MemberList.java」のどちらに不備があるのかもわからずにいます。

どうか、起動できるプログラムを教えていただきたいです。誠に勝手ながらよろしくお願いいたします><
heikyo | 2011年03月29日 16:58
コメントありがとうございます。
私も確認してみたところ、「DatabaseOpenHelper.java」のテーブル生成とサンプルデータの投入の部分に記述ミスがありました。

ブログの方は修正しましたが、正しくは「Database.COLUMN_ID....」のところを「COLUMN_ID....」のように「Database.」の部分を消してみてください。

コメントする

名前
URL
 
  絵文字
 
 
livedoor プロフィール
記事検索
カテゴリ別アーカイブ
  • ライブドアブログ
heikyoのblog