2014-01-14 103 views
-3

我有一個數據庫(db)從我得到的值(名稱,電子郵件地址,電話號碼等),我把它放在一個列表中並顯示在一個ListView中。如果我點擊一個項目,我可以從點擊的項目中獲取整個數據?因爲我需要前。電郵地址發送電子郵件。我可以從項目中提取數據,因爲從數據庫中獲取數據時是「客戶」類型。從Listview獲取數據?怎麼樣?

List list = db.getAllClients(); 

    final ListView listview = (ListView) findViewById(R.id.listView_ID); 
    listview.setClickable(true); 

    ArrayAdapter adapter = new ArrayAdapter(this, 
      android.R.layout.simple_list_item_1, list); 

    listview.setAdapter(adapter); 
    registerForContextMenu(listview); 

    listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     public void onItemClick(AdapterView<?> parentAdapter, View view, 
       int position, long id) { 

          // some code 


     } 
    }); 
+0

http://stackoverflow.com/questions/16259960/get-data-from-listview-when-clicking-listviews-child 這個答案可能會幫助 –

+0

這是一個有點不清楚,你打算怎麼做:當你點擊一排,你需要什麼?只收郵件?獲取所有數據?你想用它做什麼?顯示一個contextmenu?執行一個動作...? – nKn

+0

長按一下,彈出一個上下文菜單,其中包含選項呼叫,發送電子郵件到選定的項目,我需要發送電子郵件ex到客戶端上選定的ListView項目,但我需要這些數據(郵件地址,電話號碼等)。我怎樣才能調用這些數據? – user3190360

回答

1

您不要「您需要從您的ListView本身提取數據,只需填寫您用於填充列表的Array

由於onItemClick(...)給你點擊的項目的position,您可以...

  • 使用您的ArrayAdapter拿到項目:

    adapter.getItem(position)

  • 從獲取數據您的原始列表:

    list.get(position)

在這兩種情況下,由於要從一個匿名內部類檢索數據(您的OnItemClickListener)中問題adapterlist需要是一個實例變量,而不是一個局部變量(即將adapterlist定義爲您班級的一部分,超出您的所有方法)。

0

您可以通過位置得到ArrayAdapter數據的AdapterView.OnItemClickListener:對象List<Client>

((ArrayAdapter) listview.getAdapter()).getItem(position); 
0

,我可以看到你的代碼,你會得到列表中,使

listview.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

    public void onItemClick(AdapterView<?> parentAdapter, View view, 
      int position, long id) { 

         Client client = list.get(position) ; 


    } 
}); 

由於位置請參閱您選擇的索引列表

相關問題