2011-09-08 100 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控件...

一个有意义的对象