2012-03-28 3 views
2

У меня есть этот код для настраиваемого списка.android: подключить пользовательский список к базе данных

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. Вы звоните в OnCreate метод populateList с SimpleCursorAdapter:

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.) do, в рассматриваемом случае это будет LinearLayout с 2 textViews) с данными, которые вам нужно поместить в каждую строку таблицы.

+0

спасибо за помощь, см. Мое обновление – Gali

+0

Просто инициализируйте курсор строками, которые вам нужны для db, и примените код, который я написал выше. например: Cursor c = db.exeSQL (SELECT * FROM MEN); – Th0rndike

+0

Я пробовал это и получил ошибку: c = this.db.fetchAllNotes(); он говорит: метод fetchAllNotes() не определен для типа SQLiteDatabase – Gali

Смежные вопросы