2013-06-19 73 views
0

我想顯示數據庫的所有行作爲列表視圖。但我只有一個。我怎樣才能得到所有的行?這是我的MainAcitvity.class。我對光標不太瞭解。我認爲這可能是原因。我想顯示數據庫的所有行列表視圖。但我只有一個

SQLiteDatabase db=openOrCreateDatabase("PhoneBook.db",MODE_PRIVATE, null); 

    db.execSQL("CREATE TABLE IF NOT EXISTS PhoneBook(NAME VARCHAR,PHONE_NO VARCHAR,EMAIL VARCHAR);"); 


    Cursor c =db.rawQuery("SELECT * FROM PhoneBook" ,null); 

    totalcontact=c.getCount(); 

    if (totalcontact==0) { 

     final Dialog d =new Dialog(MainActivity.this); 
     d.setContentView(R.layout.popup); 

     d.setCancelable(true); 


     Button b =(Button)d.findViewById(R.id.button1); 
     b.setOnClickListener(new OnClickListener() { 

      @Override 
      public void onClick(View v) { 

       setContentView(R.layout.helpmenu); 

       d.dismiss(); 
      } 

     }); 
     d.show(); 
    } 
    else 
    { 
     c.moveToFirst(); 

     while(totalcontact!=0) 
     { 

     pName=c.getString(c.getColumnIndex("NAME")); 
     pPhone=c.getString(c.getColumnIndex("PHONE_NO")); 
     pEmail=c.getString(c.getColumnIndex("EMAIL")); 

    List<PhoneBook> listPhoneBook = new ArrayList<PhoneBook>(); 
    listPhoneBook.add(new PhoneBook(
      BitmapFactory.decodeResource(getResources(), R.drawable.e2), 
      ""+pName+"", ""+pPhone+"", ""+pEmail+"")); 
    PhoneBookAdapter adapter = new PhoneBookAdapter(this, listPhoneBook); 
    lvPhone.setAdapter(adapter); 
    c.moveToNext(); 
    totalcontact=totalcontact-1; 
      } 
    c.close(); 


    } 
    db.close(); 

請幫我理解我的代碼有什麼問題。

+0

你爲什麼不使用的CursorAdapter ??? – pskink

回答

3

您在每次迭代時都會創建一個新的List

聲明它的外循環:

c.moveToFirst(); 
List<PhoneBook> listPhoneBook = new ArrayList<PhoneBook>(); 

while(totalcontact!=0){  
     pName=c.getString(c.getColumnIndex("NAME")); 
     pPhone=c.getString(c.getColumnIndex("PHONE_NO")); 
     pEmail=c.getString(c.getColumnIndex("EMAIL"));  
     listPhoneBook.add(new PhoneBook(
      BitmapFactory.decodeResource(getResources(), R.drawable.e2), 
      ""+pName+"", ""+pPhone+"", ""+pEmail+"")); 
     c.moveToNext(); 
     totalcontact=totalcontact-1; 
} 
c.close(); 
PhoneBookAdapter adapter = new PhoneBookAdapter(this, listPhoneBook); 
lvPhone.setAdapter(adapter); 
+1

這是有幫助的...謝謝 –

+0

不迭代遊標,改用CursorAdapter代替 – pskink

相關問題