2011-09-08 130 views
0

我無法通過點擊獲取ListView項目的名稱。我用SimpleCursorAdapter來填充數據庫中的數據,當我點擊物品時我想獲得物品名稱,但是我收回這樣的數據。獲取ListView項目的名稱

[email protected]

如何從中獲取文本?

有m點擊收聽:

 

protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Object object = this.getListAdapter().getItem(position); 
    String item = object.toString(); 
    Log.i(TAG, "Name: " + item); 
} 

+0

你是什麼意思得到項目名稱?調用'toString()'將從其內存槽中生成一個字符串。如果你想獲得對象的名字,那麼你的對象應該有一個方法來提供它的名字,例如'getName()' –

+0

正如你在我的偵聽器中看到的那樣,我可以調用toString()作爲對象。它不起作用 – NikedLab

回答

3

其實你得到了你叫什麼。每個對象都有一個默認的toString()方法,它將返回一個字符串來描述它的類名和內存中的位置,這就是你到達那裏的結果。您必須重寫此方法才能獲得有意義的返回值。例如,通過鑄造Object到自己

class Item{ 
    private String name; 
    public void setName(String name){ 
     this.name = name; 
    } 
    public String getName(){ 
     return name; 
    } 
    public String toString(){ 
     return name; 
    } 
} 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 
    Object object = this.getListAdapter().getItem(position); 
    Item item = (Item) object; 
    String name = item.getName() \\ or = item.toString(); it's the same 
    Log.i(TAG, "Name: " + name); 
} 
+0

非常感謝! – NikedLab

4

你可以做到這一點的一行代碼,而不是

String str = listDishes.getItemAtPosition(arg2).toString(); 

其中listDishes是設置在適配器ListView控件...

一個有意義的對象