2013-01-11 2 views
1

문제가 무엇인지 확인하십시오. 내 테이블에있는 모든 레코드 (3 열 "name","address","city"의 11 개 레코드 포함)를 검색하려고하는데 내 코드는 화면에 마지막으로 삽입 된 레코드 하나만 표시합니다. 하지만 모든 레코드를 표시해야합니다. 로 While 루프에서 외부SQLite는 모든 데이터 작업을 읽습니다.

public void readData(View v) 
    { 
     DatabaseClass mydb = new DatabaseClass(this); 
     SQLiteDatabase readdata = mydb.getReadableDatabase(); 
     TextView tv = (TextView)findViewById(R.id.readtext); 
     Cursor c = readdata.rawQuery("select * from mylistdata", null); 
     int[] elementId = {R.id.textView1, R.id.textView2, R.id.textView3}; 
     if(c !=null) 
     { 
      c.moveToFirst(); 
      while(c.isAfterLast() == false) 
      { 
       listData = new ArrayList<GenericListItem>(); 
       String name = c.getString(c.getColumnIndex(DatabaseClass.NAME)); 
       String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS)); 
       String city = c.getString(c.getColumnIndex(DatabaseClass.CITY)); 
       listData.add(new GenericListItem(new String[]{name,address,city})); 
       listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId); 
       result.setAdapter(listAdapter); 
       c.moveToNext(); 
      } 



     } 

답변

3

초기화 listData ArrayList를 : 그것은 문제처럼 보인다

c.moveToFirst(); 
    listData = new ArrayList<GenericListItem>(); 
    while(c.isAfterLast() == false) 
    { 
     // add value here to listData 
     c.moveToNext(); 
    } 
    // set listData datasource to GenericListAdapter here 

    listAdapter = new GenericListAdapter(getApplicationContext(), 
       R.layout.list_layout, listData, elementId); 

    result.setAdapter(listAdapter); 
+0

감사합니다. – Unknown

2

는 루프를 할 때마다 목록을 만드는 다시한다는 것이다. 사용해보기 :

listData = new ArrayList<GenericListItem>(); //moved out of loop 

while(c.isAfterLast() == false) 
     { 
      String name = c.getString(c.getColumnIndex(DatabaseClass.NAME)); 
      String address = c.getString(c.getColumnIndex(DatabaseClass.ADDRESS)); 
      String city = c.getString(c.getColumnIndex(DatabaseClass.CITY)); 
      listData.add(new GenericListItem(new String[]{name,address,city})); 
      listAdapter = new GenericListAdapter(getApplicationContext(), R.layout.list_layout, listData, elementId); 
      c.moveToNext(); 
     } 

     result.setAdapter(listAdapter); // moved out of loop