android 101 - вопрос о наследовании списка - PullRequest
0 голосов
/ 20 декабря 2009

У меня есть ListView в моем расширенном классе ListActivity.

А затем у меня есть следующий код для определения моего клика по списку

protected void onListItemClick(ListView l, View v, int position, long id)
{
   Log.i("", ""+l.getSelectedItem().toString());
}

Я хочу получить строку данных, связанную с моим кликом.

  1. Когда я запускаю код, я получаю ошибку с getSelectedItem ().

http://developer.android.com/reference/android/widget/ListView.html. getSelectedItem () не является методом ListView, но он определен в суперклассе AdapterView. Как это возможно? Rolling Eyes

2. Кроме того, я не уверен, что понимаю эту строку: android.widget.AdapterView когда он также наследуется от android.view.ViewGroup Разве это не множественное наследование?

Ответы [ 2 ]

1 голос
/ 20 декабря 2009
  1. самый простой способ сделать это, вероятно, так:

    .

    getListView () setOnItemClickListener (это); // в ListActivity.onCreate

затем добавьте этот метод:

public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
    getListAdapter().getItem(id); //you may need to cast this to whatever you expect
}
  1. вы можете взглянуть на дерево наследования - там вы можете видеть, что в этом случае не используется множественное наследование:)

    • java.lang.Object
    • android.view.View
    • android.view.ViewGroup
    • android.widget.AdapterView
    • android.widget.AbsListView
    • android.widget.ListView
1 голос
/ 20 декабря 2009
  1. Вы можете получить трассировку стека Java через adb logcat, DDMS или перспективу DDMS в Eclipse, которая поможет вам определить вашу ошибку.

  2. Это демонстрирует дерево наследования, которое поддерживается большинством современных ОО-языков. ViewGroup является родителем AdapterView, который является родителем AbsListView, который является родителем ListView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...