2012-01-17 15 views
1

データバスト "test_database.db"からデータを読み込んで画面に表示するにはどうすればいいですか?SQLiteデータベースからデータを読み込んでリストするにはどうしたらいいですか?

データベース:test_database.db

表:tbl_homework

In table homework are those entries: 
ID    HW 
1    Mathematics 
2    Physics 
3    Sports 

ので、私はトーストやアラートにONEエントリーを送ることができる方法を知っています。 (カーソル付き) 私はここでそのチュートリアルを読んだが、私のアプリケーションのためのその例を構築することはできない。 http://coenraets.org/blog/android-samples/androidtutorial/

何がありますか? のJava:CustomDatabaseHelper.java、homework.java、main.java

レイアウト:homework.xml、main.xml

homework.javaは、私はListActivityにそれを変更しようとした通常の活動です。しかし、それはクラッシュします。

ここでコード:(それが正常に動作します)

public class homework extends Activity { 
SQLiteDatabase db; 
/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.homework); 

    //Create Database 
    db = openOrCreateDatabase("test_database.db", 
      SQLiteDatabase.CREATE_IF_NECESSARY, null); 

    db.setVersion(1); 
    db.setLocale(Locale.getDefault()); 
    db.setLockingEnabled(true); 

    //Create table tbl_homework 
    final String CREATE_TABLE_HW = 
      "CREATE TABLE IF NOT EXISTS tbl_homework (" 
      + "id INTEGER PRIMARY KEY AUTOINCREMENT," 
      + "hw TEXT);"; 

      db.execSQL(CREATE_TABLE_HW); 

    press_cmd_back(); 
    press_cmd_test_data(); 

} 

//What will happen if cmd_back gets pressed 
private void press_cmd_back(){ 
    Button cmd_back = (Button)findViewById(R.id.cmd_back); 
    cmd_back.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      Intent Intent_main = new Intent(homework.this, Noten_HausaufgabenActivity.class); 
      startActivity(Intent_main); 
     } 
    }); 
} 



//What will happen if cmd_test_data gets pressed 
    private void press_cmd_test_data(){ 
     Button cmd_test_data = (Button)findViewById(R.id.cmd_test_data); 
     cmd_test_data.setOnClickListener(new View.OnClickListener() { 

     public void onClick(View v) { 
      open_database_rw(); 
      final String INSERT_DATA_1 = "INSERT INTO tbl_homework ('hw') VALUES ('Mathematics')"; 
      final String INSERT_DATA_2 = "INSERT INTO tbl_homework ('hw') VALUES ('Physics')"; 
      final String INSERT_DATA_3 = "INSERT INTO tbl_homework ('hw') VALUES ('Sports')"; 


      db.execSQL(INSERT_DATA_1); 
      db.execSQL(INSERT_DATA_2); 
      db.execSQL(INSERT_DATA_3); 

     } 
    }); 

} 

//Open Database RW 
private void open_database_rw() { 
    db = SQLiteDatabase.openDatabase("/data/data/test.marco.notenha/databases/test_database.db", 
      null, SQLiteDatabase.OPEN_READWRITE); 
} 

} 
+0

私は混乱しています。メインアクティビティの画面のリストビューにデータをバインドしますか? –

+0

申し訳ありませんが私の説明のために私はドイツ語です。私は、同じアクティビティの画面上のリストビューにデータをバインドするのが好きです。 (宿題) –

+1

あなたに助けを求めるのに役立つ質問に書き直しました。 – everton

答えて

1

あなたは本当に私たちに多くの情報を与えられていない...あなたのコードは、ファイルR.layout.homeworkに何が含まれているか、クラッシュし、なぜ私はわからないんだけど

ListActivityのListViewにデータをバインドするには、2つのことが必要です。 1)関心のある列を読み取るためにカーソルが必要です。2)データベース行をListViewにバインドするためのアダプタが必要です。したがって、データベースを照会してデータベース上でCursorを返すメソッドを実装する必要があります。また、SimpleCursorAdapter mAdapter(または希望する場合はBaseAdapterという別のサブクラス)を作成して、関心のある列にアダプタをバインドする必要があります。 setListAdapter(mAdapter)のようなものでonCreate()メソッドを終了してください。 CursorまたはSQLiteDatabaseの複数のインスタンスを閉じずに誤って開かないように注意する必要があります。そうしないと、システムは例外をスローします。

あなたの最良の賭けは、Android Developersサイトのnotepad tutorialをチェックアウトすることです。本当にすべての仕組みが理解できるようにしてください。多くのことを学びます。それは素晴らしいチュートリアルであり、実行する必要があるものと非常に似ています(つまり、データベースにクエリを行い、 "todo notes"をメイン画面のリストにバインドします)。また、Activityライフサイクルを管理する方法と、SQLiteDatabaseを最初から正しく作成する方法についても学習します。

意味が合っています。それができない場合は、メモ帳のチュートリアルを読んでから、戻って私の答えを読んでください。うまくいけば、もっと意味をなさないでしょう。私は数ヶ月前と同じ正確な位置にいましたが、それは簡単になりましたが、実際に座ってこの物が最初にどのように働くのかを理解しようとする必要があり、メモ帳のチュートリアルは始めるのに最適な場所です!

幸運を祈る!

+0

明日私は再びチュートリアルを理解しようとします;) ありがとう! –

+0

ご質問がありましたらお知らせください:) –

関連する問題