2011-03-18 48 views
0

我難以理解如何正確實現可以從我的sqlite數據庫中提取一列數據並將其添加到列表視圖的適配器(基於android提供的多個複選框)。所有現有示例使用以下內容:嘗試在.xml中使用帶有遊標但沒有ListActivity的列表視圖

public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     String[] myList = new String[] {"Hello","World","Foo","Bar"};    
     ListView lv = new ListView(this); 
     lv.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,myList)); 
     setContentView(lv); 
     } 

但是,我不想要字符串。這裏是我的代碼:

public class ListGroups extends Activity { 
    /** Called when the activity is first created. */ 
    private ExpensesDbAdapter mDBHelper; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.view); 
     ListView lv = (ListView)findViewById(R.id.list1); 
     mDBHelper = new ExpensesDbAdapter(ListGroups.this); 
     mDBHelper.open(); 
     Cursor c = mDBHelper.fetchAllGroups(); 
     startManagingCursor(c); 
     String[] from = new String[] {ExpensesDbAdapter.KEY_GROUPNAME}; 
     int[] to = new int[] {R.id.groupname}; 
     ListAdapter ladapter = new SimpleCursorAdapter(ListGroups.this, R.layout.grouprow, c, from, to); 
     lv.setAdapter(ladapter); 
     lv.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE); 
    } 

} 

這裏的view.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" 
    android:gravity="center"> 
    <TextView android:id="@+id/header01" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:gravity="center" 
       android:text="Select Groups"/> 
    <ListView 
     android:id="@+id/list1" 
     android:layout_width="match_parent" 
     android:layout_height="0dip" 
     android:layout_weight="1" /> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/footerbutton01" 
     android:text="Get Expense Reports" /> 
</LinearLayout> 

而且,由於SimpleCursorAdapter要求它,這裏的grouprow.xml:

<?xml version="1.0" encoding="utf-8"?> 
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/groupname" 
    android:layout_width="match_parent" 
    android:layout_height="?android:attr/listPreferredItemHeight" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:gravity="center_vertical" 
    android:checkMark="?android:attr/listChoiceIndicatorMultiple" 
    android:paddingLeft="6dip" 
    android:paddingRight="6dip"/> 

如果我使用一個ListActivity,並且不會調用Creation上的佈局,我可以讓它工作,但我需要圍繞該ListView的包裝,並且我不能讓.addHeader和.addFooter方法爲我工作。任何關於創建適當的適配器的幫助都將被引用。

回答

0

回答了一些幫助。有幾件事情是錯誤的,主要是在list.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" 
    android:gravity="center"> 
    <TextView android:id="@+id/header01" 
       android:orientation="vertical" 
       android:layout_width="fill_parent" 
       android:layout_height="fill_parent" 
       android:gravity="center" 
       android:text="Select Groups"/> 
    <ListView 
     android:id="@android:id/android:list" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_around" 
     android:layout_weight="1" /> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/footerbutton01" 
     android:text="Get Expense Reports" /> 
</LinearLayout> 

這允許您將ListView綁定到xml中的該元素。您沒有名稱,但您可以在onCreate方法中使用getListView()來訪問它。

相關問題