2013-05-17 72 views
0

我試圖擺弄sqlite數據庫,listview和arraylist.On點擊按鈕數據被插入到數據庫,然後使用遊標的數據提取'選擇'和理想情況下應在listview.Following反映是相同的代碼:ListView不更新數組中的條目

以下活動發生在onCreate方法:

lstitem=new ArrayList<String>(); 
    listadap=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,lstitem); 
    l1=(ListView)findViewById(R.id.listView1); 
    l1.setAdapter(listadap); 
    l1.setVisibility(View.VISIBLE); 

而且按鈕單擊該代碼是應該做下面的事情,關閉這它插入的值非常好,但我猜想Cursor對象有些問題,並且它的實例化使用'rawQuery'並不確定它:

 MainActivity.myDataBase.openDatabase("/data/data/packagename/databases/tablename", null,MainActivity.myDataBase.OPEN_READWRITE); 
    MainActivity.myDataBase.execSQL("INSERT INTO " + 
         MainActivity.tablename + 
         " Values ('"+ finalnumber +"','"+ name +"','"+ message +"','"+ event +"','"+ ldate +"');"); 
    Cursor cu = MainActivity.myDataBase.rawQuery("SELECT Name FROM " + MainActivity.tablename + " WHERE Date =" + ldate +";" , null); 

    cu.moveToFirst(); 
    Log.d("first rec", cu.toString()); 
    while(cu.isAfterLast()) 
    { 
     try{ 
      lstitem.add(cu.getString(0)); 
      Log.d("first list item",lstitem.get(0)); //this is not returning any value in logcat. 
      Log.d("first rec", cu.getString(0));// this is returning garbled value in logcat 
      cu.moveToNext(); 
      } 
     catch(Exception e) 
      { 
      e.printStackTrace(); 
     } 
    } 

請說清楚我的代碼是否在行爲不端。謝謝。

+0

如果你的數據來自數據庫,爲什麼用一個ArrayList麻煩之後?爲什麼使用rawQuery而不是select? 'cu.toString()'返回遊標的描述。很可能不太理解。我的猜測是你的查詢不會返回任何結果 – njzk2

回答

0

當您更改適配器的內容時​​,您應通過執行listadap.notifyDataSetChanged()來告訴他數據已更改。

0

呼叫listadap.notifyDatasetChanged()將數據陣列

+0

仍未從數組中檢索數據。 :( – mithil

0

使用下面的代碼

lstitem=new ArrayList<String>(); 
listadap=new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,lstitem); 
l1=(ListView)findViewById(R.id.listView1); 
l1.setAdapter(listadap); 
l1.notifyDataSetChanged(); 
l1.setVisibility(View.VISIBLE);