Получить имя элемента ListView - PullRequest
0 голосов
/ 08 сентября 2011

Я не могу получить название элемента ListView по клику.Я заполняю данные из базы данных SimpleCursorAdapter, и когда я нажимаю на элемент, я хочу получить имя элемента, но я получаю данные, подобные этому

android.content.ContentResolver$CursorWrapperInner@4054b988.

Как я могу получить из него текст?

Есть прослушиватель m click:


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 );
}

Ответы [ 2 ]

4 голосов
/ 14 марта 2012

Вы можете сделать это в одной строке кода вместо

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

, где listDishes - это ListView, который устанавливает адаптер ...

3 голосов
/ 08 сентября 2011

На самом деле вы получили то, что назвали. Каждый объект имеет метод 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 );
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...