如果您使用的是ArrayAdapter
來支持您的ListView
,那麼@ jaibatrik的建議絕對是一個好建議。但是,如果您使用的是CursorAdapter
,則可能更容易利用getItemId()
的返回值。
默認情況下,CursorAdapter
將尋找一個列名爲"_id"
在Cursor
你爲它供給和返回,作爲id
值當你點擊一個項目:
onItemClick(AdapterView<?> parent, View view, int position, long id)
這最後的值將包含ID你的光標項目。您也可以覆蓋此行爲,並讓它返回您在Cursor
中可能訪問的任何其他唯一值。
對於ArrayAdapter
也是如此:默認情況下,它將返回數組中項目的位置作爲唯一ID。但是,通過重寫該方法,您可以輕鬆地使其返回fruit_id
。然後它將直接通過onItemClick(...)
傳遞,這可以節省您在那裏檢索它(再次)。
我的問題是,如果我搶,例如,ITEM_ID(不只是項目), 我在哪裏把ITEM_ID在ListView行(Android上側)?
具有代表你在列表中可視化的數據對象的美,是你已經擁有的所有成分,使其工作。讓我們通過@jaibatrik給出的Fruit
例如,添加一個getter方法這個例子的目的:
class Fruit {
private int fruit_id;
private String fruit_name;
// Constructors
// Getters and Setters
public int getId() { return fruit_id; }
}
在評論你描述你從數據庫中檢索數據的水果,並在列表填充它:
List<Fruit> fruits = ...
該列表應該是支持您的ArrayAdapter
的數據集。更具體地講,因爲它是一個類型類,你應該有你設定轉接器來ListView
的ArrayAdapter<Fruit>
實例。
現在,假設您對ListView
設置了OnItemClickListener
,則只要用戶點擊某個項目,它就會觸發。使用傳入回調的參數,就可以讀出與被選擇的位置相關的項目:
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Fruit fruit = (Fruit) parent.getItemAtPosition(position);
int fruit_id = fruit.getId();
...
}
檢索了對象,你可以做任何你所保存的數據一樣。無需明確設置ID對行的看法,因爲它應該已經是背上ListView
數據集的一部分。
我已經這樣做其實這個確切的方法......所以,我找回在適配器我getView方法的ID ...但..我該怎麼用它_do_?這是我的主要問題。我如何將它(而不是一個UI元素)分配給該行? – KickingLettuce
其實當你指定'ArrayAdapter''作爲ListAdapter',水果對象被自動分配到對應的'ListView'項目。在'onItemClickAdapterView >父,觀景,INT位置,長id'方法,您檢索使用'((果樹)mAdapter.getItem(位置))。的getId()' –
jaibatrik