2016-03-15 60 views
-2
 t1=(TextView)findViewById(R.id.s1); 
    t2=(TextView)findViewById(R.id.s2); 
    t3=(TextView)findViewById(R.id.s3); 
    t4=(TextView)findViewById(R.id.s4); 

     dbase=openOrCreateDatabase("reg_db", Context.MODE_PRIVATE, null); 
     dbase.execSQL("create table if not exists registration(name  varchar(40),age number(5),casestudy varchar(100),gender varchar(10),phonenumber varchar(12),doctorname varchar(50),date DATE,time varchar(5))"); 


     Cursor c=dbase.query("registration",new String[]{"name","age","casestudy","gender","phonenumber","doctorname","date","time"}, null, null, null, null, null); 
     while(c.moveToNext()){ 
     String c1=c.getString(0); 
     String c2=c.getString(1); 
     String c3=c.getString(2); 
     String c4=c.getString(3); 
     String c5=c.getString(4); 
     String c6=c.getString(5); 
     String c7=c.getString(6); 
     String c8=c.getString(7); 
     t1.setText(c1); 
     t2.setText(c5); 
     t3.setText(c7); 
     t4.setText(c8); 

我能夠顯示在我的表如何以列表的形式顯示所有行只有一排......請註明 謝謝檢索的SQLite值到Android的ListView

+1

您是否將數據顯示到ListView中? –

+1

您未能在您的問題中包含ListView代碼... –

回答

0

使用此之前while循環

你必須在第一位置

if (c!= null) { 

     //more to the first row 
     c.moveToFirst(); 



while(c.moveToNext()){ 
     String c1=c.getString(0); 
     String c2=c.getString(1); 
     String c3=c.getString(2); 
     String c4=c.getString(3); 
     String c5=c.getString(4); 
     String c6=c.getString(5); 
     String c7=c.getString(6); 
     String c8=c.getString(7); 
     t1.setText(c1); 
     t2.setText(c5); 
     t3.setText(c7); 
     t4.setText(c8); 
} 
} 
0

使用此代碼來設置光標:

if(c!=null) 
    { 
    if (c.moveToFirst()) { 
     do { 
     String c1=c.getString(0); 
     String c2=c.getString(1); 
     String c3=c.getString(2); 
     String c4=c.getString(3); 
     String c5=c.getString(4); 
     String c6=c.getString(5); 
     String c7=c.getString(6); 
     String c8=c.getString(7); 
     t1.setText(c1); 
     t2.setText(c5); 
     t3.setText(c7); 
     t4.setText(c8); 

     } while (c.moveToNext()); 
    } 
    } 
0
if (c.moveToFirst()){ 
    do{ 
     // do what ever you want here 
    }while(.moveToNext()); 
} 
c.close(); 
0

我想你似乎試圖填充ListView,而Listview將有一個適配器指向每個行/條目的另一個佈局。

也就是說,要填充Listview,您將需要一個適配器。適配器將使用定義每個條目(行)的XML佈局,除了包含ListView和活動的佈局之外,這些佈局也是如此。

這裏的一個自定義光標適配器的例子: -

package mjt.shopper; 

import android.content.Context; 
import android.database.Cursor; 
import android.support.v4.content.ContextCompat; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.CursorAdapter; 
import android.widget.TextView; 

/** 
* Created by Mike092015 on 6/02/2016. 
*/ 
class AislesCursorAdapter extends CursorAdapter { 
    public AislesCursorAdapter(Context context, Cursor cursor, int flags) { 
     super(context, cursor, 0); 
    } 
    @Override 
    public View getView(int position, View convertview, ViewGroup parent) { 
     View view = super.getView(position, convertview, parent); 
     Context context = view.getContext(); 
     if (position % 2 == 0) { 
      view.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewroweven)); 
     } else { 
      view.setBackgroundColor(ContextCompat.getColor(context, R.color.colorlistviewrowodd)); 
     } 
     return view; 
    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 
     TextView textviewaisleid = (TextView) view.findViewById(R.id.aisle_id_entry); 
     TextView textviewaislename = (TextView) view.findViewById(R.id.aisle_name_entry); 
     TextView textviewaisleorder = (TextView) view.findViewById(R.id.aisle_order_entry); 
     TextView textviewaisleshopref = (TextView) view.findViewById(R.id.aisle_shopref_entry); 

     textviewaisleid.setText(cursor.getString(ShopperDBHelper.AISLES_COLUMN_ID_INDEX)); 
     textviewaislename.setText(cursor.getString(ShopperDBHelper.AISLES_COLUMN_NAME_INDEX)); 
     textviewaisleorder.setText(cursor.getString(ShopperDBHelper.AISLES_COLUMN_ORDER_INDEX)); 
     textviewaisleshopref.setText(cursor.getString(ShopperDBHelper.AISLES_COLUMN_SHOP_INDEX)); 
    } 
    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     return LayoutInflater.from(context).inflate(R.layout.activity_aisle_list_entry, parent, false); 
    } 
} 

的getView方法並不重要,可以忽略(在它上面交替的行/條目的顏色)。

您將需要bindView方法,顯然是根據您的需求量身定製的(前半部分獲取要填充的視圖,後半部分設置視圖並且您可能會注意到它看起來與代碼的一部分相似)。

您還需要newView方法,該方法基本上設置了要用於ListView的每個行/條目(即以下XML)的佈局。

注意! ShopperDBHelper.AISLES_COLUMN _ ??? _索引包含索引光標

下面是一個例子XML(由上述適配器使用的一個): -

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 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:paddingBottom="@dimen/standard_listview_row_padding_vertical" 
    android:paddingLeft="@dimen/standard_listview_row_padding_horizontal" 
    android:paddingRight="@dimen/standard_listview_row_padding_horizontal" 
    android:paddingTop="@dimen/standard_listview_row_padding_vertical" 
    tools:context=".AisleListEntryActivity"> 
    <!-- Aisle ID 4 debugging --> 
    <TextView 
     android:id="@+id/aisle_id_entry" 
     android:layout_width="30sp" 
     android:layout_height="@dimen/rowheight" 
     android:textSize="@dimen/standard_listview_text_size" 
     android:visibility="visible"/> 
    <!-- Aisle Name --> 
    <TextView 
     android:id="@+id/aisle_name_entry" 
     android:layout_width="@dimen/ailsename_text_size" 
     android:layout_height="@dimen/rowheight" 
     android:textSize="@dimen/standard_listview_text_size" 
     android:textStyle="bold" /> 
    <!-- Aisle Order--> 
    <TextView 
     android:id="@+id/aisle_order_entry" 
     android:layout_width="@dimen/ailseorder_text_size" 
     android:layout_height="@dimen/rowheight" 
     android:textSize="@dimen/standard_listview_text_size"/> 
    <!-- Aisle Shopref 4 debugging --> 
    <TextView 
     android:id="@+id/aisle_shopref_entry" 
     android:layout_width="50sp" 
     android:layout_height="@dimen/rowheight" 
     android:textSize="@dimen/standard_listview_text_size" 
     android:visibility="gone"/> 
</LinearLayout> 

下面是獲取遊標的代碼示例並設置爲(再次13759以上)使用適配器列表視圖,這將是您的活動: -

Cursor aislescsr = shopperdb.getAislesPerShopAsCursor(csr.getInt(ShopperDBHelper.SHOPS_COLUMNN_ID_INDEX)); 
    final ListView lv = (ListView) findViewById(R.id.aalbclv01); 
    AislesCursorAdapter aisleadapter = new AislesCursorAdapter(lv.getContext(), aislescsr, CursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER); 
    currentaca = aisleadapter; 
    lv.setAdapter(aisleadapter); 

第一行填充從數據庫光標。 第二行獲取將使用數據庫中的數據填充的ListView。 第三行設置適配器的光標。 第四行不相關。 第五行將適配器綁定到ListView。

有一個SimpleCursorAdapter,但我從來沒有用過,所以不能真正告訴你它/他們。

此外,CursorAdapter期望在那裏有一個名爲_id的列,因此您可能必須使用AS _id。

這裏是一個例子,我沒有_id和使用AS進行設置(見第3行): -

 SQLiteDatabase db = this.getReadableDatabase(); 
     String sqlstr = " SELECT " + PRODUCTUSAGE_COLUMN_AISLEREF + 
       " AS _id, " + 
       PRODUCTUSAGE_COLUMN_PRODUCTREF + ", " + 
       PRODUCTUSAGE_COLUMN_COST + ", " + 
       PRODUCTUSAGE_COLUMN_BUYCOUNT + ", " + 
       PRODUCTUSAGE_COLUMN_FIRSTBUYDATE + ", " + 
       PRODUCTUSAGE_COLUMN_LATESTBUYDATE + ", " + 
       PRODUCTUSAGE_COLUMN_MINCOST + 
       " FROM " + PRODUCTUSAGE_TABLE_NAME + 
       " ORDER BY _id;"; 
     return db.rawQuery(sqlstr, null); 
0

化妝法這樣在數據庫類

// Getting All User 
public List<UserModel> getAllUser() { 
    List<UserModel> userList = new ArrayList<UserModel>(); 
    // Select All Query 
    String selectQuery = "SELECT * FROM " + TABLE_USER; 

    SQLiteDatabase db = this.getWritableDatabase(); 
    Cursor cursor = db.rawQuery(selectQuery, null); 

    // looping through all rows and adding to list 
    if (cursor.moveToFirst()) { 
     do { 
      UserModel user = new UserModel(); 
      user.setId(cursor.getString(0)); 
      user.setName(cursor.getString(1)); 
      user.setEmail(cursor.getString(2)); 
      // Adding user to list 
      userList.add(user); 
     } while (cursor.moveToNext()); 
    } 

    // return user list 
    return userList; 
} 

所以你調用這個方法,你會得到List類型的模型類

之後,你只需要通過適配器並實現它