2012-04-12 9 views
1

データベースの要素を表示するリストビューを作成する際に助けが必要です。 最初に、3つのフィールド、TextView with ID:Text1,Text2 and Text3 のsmall xmlレイアウトを作成し、自分のアクティビティでlistviewを1つ作成しました。私は、データベースクラスを作成した後、私はインターフェイスAndroid:Sqlite ListView

public interface TableRegistry extends BaseColumns{ 

    String TABLE_NAME = "Registry"; 

    String TYPE = "Type"; 
    String DATE = "Date"; 
    String STATUS = "Status"; 
    String NUMBER = "Number"; 
    String MESSAGE = "Message"; 
    String OTHER = "Other"; 

    String[] COLUMNS = new String[] 
       { _ID, TYPE, DATE, STATUS, NUMBER, MESSAGE, OTHER }; 
      } 

の列をグループ化した後 ...

public class APdatabaseClass extends SQLiteOpenHelper { 

    private static final String DATABASE_NAME = "APdatabase"; 
    private static final int DATABASE_VERSION = 1; 

    public APdatabaseClass(Context context) { 
     super(context, DATABASE_NAME , null, DATABASE_VERSION); 
     // TODO Auto-generated constructor stub 
    } 

    @Override 
    public void onCreate(SQLiteDatabase db) { 

     String sql = "CREATE TABLE {0} ({1} INTEGER PRIMARY KEY AUTOINCREMENT," + 
       " {2} TEXT NOT NULL,{3} TEXT NOT NULL,{4} TEXT NOT NULL,{5} TEXT NOT NULL,{6} TEXT NOT NULL, {7} TEXT NOT NULL);"; 
      db.execSQL(MessageFormat.format(sql, TableRegistry.TABLE_NAME, TableRegistry._ID, 
       TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS, TableRegistry.NUMBER, TableRegistry.MESSAGE, TableRegistry.OTHER)); 

    } 

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

     // Drop older table if existed 
     db.execSQL("DROP TABLE IF EXISTS " + TableRegistry.TABLE_NAME); 

     // Create tables again 
     onCreate(db);  
    } 

今どのように私は私のデータベースがSimpleCursorAdapterか何かと私の活動にListViewコントロールに接続していますか?私は3のTextViewフィールドを移入する必要があります。

TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS. 

おかげで事前に!

答えて

2

に思えます。ここで私は通常、それを行う方法は次のとおりです。あなたがリストを作成したいものは何でもクラスに続いて

public Cursor fetchListData() { 
    return mDb.query(TableRegistry.TABLE_NAME, new String[] { TableRegistry._ID, 
     TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS }, null,null, 
     null, null, null); 
} 

まず、必要な情報を取得するために、データベースのヘルパーメソッドを生成

APdatabaseClass mDbHelper = new APdatabaseClass(getActivity()); 
mDbHelper.open(); 

Cursor c = fetchListData(); 
getActivity().startManagingCursor(c); 

String[] from = new String[] { TableRegistry.TYPE, TableRegistry.DATE, TableRegistry.STATUS }; 
int[] to = new int[] { R.id.Text1, R.id.Text2, R.id.Text3 }; 
SimpleCursorAdapter data = new SimpleCursorAdapter(getActivity(), R.layout.yourlistlayout, c, from, to); 
setListAdapter(data); 

これは、ListFragmentまたはListActivityを使用していることを前提としています。そうでない場合は、アダプターの設定方法が若干異なります。

希望すると便利です。

+0

答えてくれてありがとう! – Tony

0

はい、raqQuery()メソッドを使用してクエリを実行できるようになりました。結果としてCursorが表示されます。

これでカーソルを反復してデータをフェッチする必要がありました。例えば

あなたは余分な作業のビットしようとしているように、

Cursor cur = db.raqQuery("Select * from myTable",null); 
if (cur != null) { 
    if (cur.moveToFirst()) { 
     do { 
      cur.getString(cur.getColumnIndex("Name"))); // "Name" is the field name in table 
     } while (cur.moveToNext()); 
    } 
} 
+0

お返事ありがとうございます! – Tony

関連する問題