2012-09-04 55 views
0

我已經得到了如何從sqlite數據庫獲取數據的基本前提,並且我已經知道它將日誌返回到logcat。但是,我似乎無法找到將這些數據輸出到列表視圖的最佳方式。Android:鏈接一個簡單的光標到列表視圖

起初我以爲我會把數據放入一個數組,然後使用該數組設置一個listview,但是從四處查看可以直接將光標作爲數據源鏈接到列表視圖,但我無法完全獲取我的頭在附近。

這裏是我的MainActivity(一旦我的工作了多一點,我把SQL中它自己的輔助類,但現在這一切都從主活動)

我的主要活動是:

public class MainActivity extends Activity { 

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

     SQLiteDatabase db = openOrCreateDatabase("MyDB", MODE_PRIVATE, null); 
     Cursor c = db.rawQuery("SELECT * FROM MyTable", null); 
     c.moveToFirst(); 
     Log.e("TomDebug", c.getString(c.getColumnIndex("FirstName"))); 
     db.close(); 

    } 

} 

我的佈局activiy_main.xml是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:gravity="fill" > 

    <ListView 
     android:id="@+id/derooms" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentTop="true" > 
    </ListView> 

</RelativeLayout> 

我的表有三列,但現在我很高興與它只是在數據庫中噴涌而出所有FirstNames到名單鑑於

湯姆

回答

1

看來你還沒有給你的列表視圖編寫任何代碼,你的問題不應該因爲你貢獻的努力而被回答。無論如何,下面是答案的演示代碼(不是完全滿足您的要求):

(1)創建list_view_item.xml以在列表視圖中顯示您的信息,例如:a顯示出您的數據字段。

(2)創建DataBoundAdapter綁定到你的數據庫遊標的結果:

public class DataBoundAdapter extends CursorAdapter 
{ 
    Context _context; 

    public DataBoundAdapter(Context context, Cursor c, boolean autoRequery) { 
     super(context, c, autoRequery); 
     _context = context; 
    } 

    @Override 
    public void bindView(View view, Context c, Cursor cur) 
    { 
     // TODO: handle data when binding to your list view 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) 
    { 
     int item_view_id = R.layout.list_view_item; 

     //inflate item view to list view holder 
     LinearLayout holderView = new LinearLayout(_context); 
     String inflaterName = Context.LAYOUT_INFLATER_SERVICE; 
     LayoutInflater inflater = (LayoutInflater) _context.getSystemService(inflaterName); 
     inflater.inflate(item_view_id, holderView, true); 

     return holderView; 
    } 
} 

(3)在MainActivity.onCreate(..)

ListView myListView = (ListView)findViewById(R.id.derooms); 
DataBoundAdapter dbAdapter = new DataBoundAdapter(this, your_db_cursor, true); 
myListView.setAdapter(dbAdapter); 
+0

非常感謝您的幫助Kelvin,非常感謝 – TMB87