2014-01-13 64 views
0

我有一個存儲int和字符串的表的數據庫。整數值是主鍵。我創建了一個函數來從數據庫中獲取字符串並將它們存儲在列表中,然後使用ArrayAdapter將其應用於ListView,如下所示。如何將ListView鏡像到數據庫?

List<String> list = db.getAllStringNotes(); 

ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
       android.R.layout.simple_list_item_activated_1, list); 
listview.setAdapter(adapter); 
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

麻煩的是從這個listview中刪除。由於主鍵不與字符串一起出現,因此我正在使用從列表視圖中選擇的項目的位置進行刪除。但是,如果我從列表的中間刪除一個條目,那顯然會弄亂一些東西。

所以想知道是否可以將主鍵即整數值與字符串一起添加到此列表視圖中,但不顯示整數值?

+0

你西港島線需要在這種情況下寫一個自定義列表適配器。 –

回答

2

簡單的事情是創建兩個目錄,

1. String - Stored String notes 
2. Integer - Stored all Primary Keys 

所以每當上Listview用戶用戶點擊獲取其位置,並基於該位置得到第二個列表中的主鍵值,然後執行您刪除查詢。

+0

我的確想到了這一點,但這是實現它的理想方式嗎?在Android中,Android是否支持某些功能,如某些CustomAdapter,是什麼? –

+0

請看看SimpleCursor Adapter。 –

+0

謝謝...會看到它 –

0

有很多方法可以做到這一點:但你已經在使用一個ArrayList,所以我會建議只是讓另一個數組列表,同時從數據庫中獲取:

所以在使用位置刪除: 使用主鍵從PrimaryKeyArrayList 並從ArrayList中刪除值;

有了這個,你將得到你所需要的;

+0

是啊......想到這是第一次,但通緝更清潔的實施。你能提出一些其他的方法來完成這樣的事情嗎? –

0

按照下列步驟操作:

  1. 創建bean.java文件,讓您的分貝值
  2. 創建CustomAdapter.java到pupulate的項目和處理刪除操作
  3. 創建在您的適配器中刪除方法並傳遞選定的bean對象以從DB和ArrayList中刪除。
  4. 刪除通話後notifyDatasetChanged方法,以反映列表的變化

編輯:

Bean文件:

public class MyDB_Bean{ 
    public int id; 
    public String data; 
    MyDB_Bean(int id,String data){ 
    this.id=id; 
    this.data=data; 
    } 
} 

從活動中調用

ArrayList<MyDB_Bean> list = db.getAllStringNotes(); 
MyArrayAdapter adapter = new MyArrayAdapter<String>(this,list); 
listview.setAdapter(adapter); 
listview.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 

對於CustomAdapter遵循這些教程

http://www.ezzylearning.com/tutorial.aspx?tid=1763429

Custom Adapter for List View

http://www.vogella.com/tutorials/AndroidListView/article.html

http://learnandroideasily.blogspot.in/2013/06/listview-with-custom-adapter.html

+0

啊謝謝!肯定會看到所有這些,並嘗試創建我自己的適配器。 –