2013-06-19 4 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

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