2012-01-29 2 views
0

SimpleAdapter 및 TableView를 사용하여 SQLite 테이블의 내용을 표시하려고합니다. 처음 시작했을 때 제대로 작동하지만 Activity를 다시 실행하면 listView에서 한 번 더 테이블을 추가합니다. 이것은 프론트 메뉴에서 인 텐트를 시작할 때마다 발생합니다.작업이 시작될 때마다 목록 뷰에 SQLite 테이블이 추가되지 않도록하십시오.

마지막으로 SimpleAdapter가 저장되어 있고 의도가 메뉴에서 제외되었을 때 다시 추가 된 것처럼 보입니까?

시작될 때마다 어댑터를 재설정 할 수있는 방법이 있습니까?

내가 프로그래밍에 새로 온 사람과 사람이

: 일부 코드 나를 도울 수 있기를 바랍니다 : 당신이에서 onCreate에 목록을 작성하기 때문에

static final ArrayList<HashMap<String,String>> results = new ArrayList<HashMap<String,String>>(); 
private String tableName = DBAdapter.tableName; 
private SQLiteDatabase newDB; 



@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    openAndQueryDatabase(); 

    displayResultList(); 

    } 



private void displayResultList() { 

    ListAdapter adapter = new SimpleAdapter(
      this, 
      results, 
      R.layout.liste, 
      new String[] {"Name","LastName","Age"}, 
      new int[] {R.id.item_id,R.id.item_name,R.id.item_tid} 
      ); 
    setListAdapter(adapter); 

} 
    private void openAndQueryDatabase() { 
     try { 
      DBAdapter dbHelper = new DBAdapter(this.getApplicationContext()); 
      newDB = dbHelper.getWritableDatabase(); 
      Cursor c = newDB.rawQuery("SELECT Startnr, Navn, Tid FROM " + 
        tableName + " ORDER BY Startnr ASC" , null); 

      if (c != null) { 
       if (c.moveToFirst()) { 
        do { 
         HashMap<String,String> list = new HashMap<String,String>(); 
         String firstName = c.getString(c.getColumnIndex("Startnr")); 
         String lastName = c.getString(c.getColumnIndex("Navn")); 
         String age = c.getString(c.getColumnIndex("Tid")); 
         list.put("Name", "" + firstName); 
         list.put("LastName", "" + lastName); 
         list.put("Age", "" + age); 
         results.add(list); 
        }while (c.moveToNext()); 
       } 
      }   
     } catch (SQLiteException se) { 
      Log.e(getClass().getSimpleName(), "Could not create or Open the database"); 
     } finally { 
      if (newDB != null) 
       newDB.close();     
     } 

    } 
+0

가 나에게 좋아 보이는을 각 활동마다 한 번만 호출됩니다. onResume과 같은 다른 라이프 사이클 메소드에 코드가 있습니까? – henrik

답변

1
Its because you have declared the "results" array list as a "static" variable. 
+0

감사합니다! 완벽하게 작동합니다. – Christoffer

관련 문제