2016-12-21 63 views
0

我試圖在用戶單擊按鈕時檢索ListView的選定項。我使用下面的代碼在setOnItemClickListenergetSelectedItem()ListView上的按鈕單擊

lvequipments.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 

      Object o = lvequipments.getItemAtPosition(i); 
      CustomerEquipmentView customerEquipmentView = (CustomerEquipmentView)o; 
      Product product = workOrderPresenter.getCustomerModel().getProduct(customerEquipmentView); 

      Toast.makeText(getBaseContext(), customerEquipmentView.getModelName(), Toast.LENGTH_LONG).show(); 

     } 
    }); 

而且吐司成功地從對象獲取的型號名稱當我選擇在ListView不同的項目。在ListView之外,我有一個按鈕可以保存來自不同面板的一些數據。我試圖檢索ListView項目在這裏再次像這樣

public void saveToDatabase() { 
     Object o = lvequipments.getSelectedItem(); 
     CustomerEquipmentView customerEquipmentView = (CustomerEquipmentView)o; 
     ... 
} 

o爲空。在運行期間在斷點處評估lvequipments.getSelectedItem()也給出null。如何成功從onItemClick()方法以外的ListView中檢索所選項目?

+0

你爲什麼期望'getSelectedItem'返回任何東西?在你的列表視圖中選擇了什麼? – njzk2

+0

當你點擊在列表視圖中的項目不會成爲選擇? – wizloc

+0

沒有。它的listview是在CHOICE_MODE中,它不是NONE,它可以被檢查。 – njzk2

回答

1
  1. 在類中定義一個int字段,如int SelectedItemIndex
  2. 在onItemSelected(...)方法寫SelectedItemIndex = i的savetodatabase方法
  3. 得到由lvequipments.getItemAtPosition(SelectedItemIndex)所選擇的元素; 那你想我想的
+0

這是唯一的方法嗎?爲什麼不getSelectedItem()工作,它似乎應該是一種無痛的方式來檢索選定的項目 – wizloc

+0

不,你可以找到太多的其他方式來做到這一點。 –

+0

和你設置的監聽器是單擊監聽器... –