2012-03-28 16 views
2

私はカスタムリスト用にこのコードを持っています。アンドロイド:カスタムリストをデータベースに接続

my_list.xml:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 

    <TextView android:id="@+id/text1" 
     android:textSize="16px" 
     android:textStyle="bold" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

    <TextView android:id="@+id/text2" 
     android:textSize="12px" 
     android:textStyle="italic" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 
</LinearLayout> 

と活動:

public class ZcustListActivity extends ListActivity { 


//db Work 
SQLiteDatabase db; 
String SQL; 
ArrayList<String> db_results=null; 


    private SimpleAdapter notes; 

    ArrayList<HashMap<String,String>> list = new ArrayList<HashMap<String,String>>(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

    //db Work 
    this.db = this.openOrCreateDatabase("DEMO", MODE_PRIVATE, null); 
    this.db.execSQL("CREATE TABLE IF NOT EXISTS MEN(A VARCHAR,B VARCHAR,C VARCHAR);"); 
    this.db.execSQL("delete from MEN;"); 
    db.execSQL("INSERT INTO MEN(A,B,C) VALUES('AA1','BB1','CC1');"); 
    db.execSQL("INSERT INTO MEN(A,B,C) VALUES('DD2','EE2','FF2');"); 


     notes = new SimpleAdapter(
       this, 
       list, 
       R.layout.my_list, 
       new String[] { "line1","line2" }, 
       new int[] { R.id.text1, R.id.text2 } ); 
     setListAdapter(notes); 

     HashMap<String,String> item = new HashMap<String,String>(); 
     item.put("line1","i am row 1"); 
     item.put("line2","i am row 2"); 
     list.add(item); 
     notes.notifyDataSetChanged(); 
    } 
} 

私は私のデータベース作業を追加する - が、これをどのように組み合わせますか?アンドロイドの新しいi'am

、それは私のために仕事をいけない......

答えて

2

探しているものですDBManagerクラスがあります。う

private DBManager dbM = new DBManager(); 
private Cursor c; 

public void populateList(){ 
     dbM.open(); 
     c = this.db.query(MEN, new String[] {"line1", "line2" 
      }, null, null, null, null, null); 
    startManagingCursor(c); 

    String[] from = new String[]{"line1","line2" }; 

     int[] to = new int[]{R.id.text1, R.id.text2}; 

SimpleCursorAdapter notes = 
     new SimpleCursorAdapter (this, R.layout.list_row, c, from, to); 
    setListAdapter(notes); 

} 
} 

はまた、あなたのlist_row用に別のビューを作成する必要がありますので(お好きなレイアウトを、それを定義する(SimpleCursorAdapterコンストラクタで使用されている。):あなたはSimpleCursorAdapterとのonCreateにpopulateListメソッドを呼び出しますそういう場合は、2つのtextViewsを持つLinearLayoutになります)をテーブルの各行に配置する必要があります。

+0

ありがとう、私の更新を参照してください – Gali

+0

dbに必要な行でカーソルを初期化し、上記のコードを適用してください。たとえば、次のようになります。カーソルc = db.exeSQL(SELECT * FROM MEN); – Th0rndike

+0

これを試して、エラーが発生しました:c = this.db.fetchAllNotes();それは言う:fetchAllNotes()メソッドは、タイプSQLiteDatabaseのために定義されていません – Gali

関連する問題