android 101 - listview继承问题

时间:2009-12-19 21:36:24

标签: android inheritance listview

我在扩展的ListActivity类中有一个ListView。

然后我有以下代码来检测我在列表上的点击

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

我想获取与我的点击相关联的数据字符串。

  1. 当我运行代码时,我遇到了getSelectedItem()的错误。

  2. http://developer.android.com/reference/android/widget/ListView.html。 getSelectedItem()不是ListView的方法,但它在超类AdapterView中定义。 怎么可能?滚动眼睛

    2。  另外,我不确定我理解这一行: android.widget.AdapterView 当它还继承自android.view.ViewGroup 是不是多重继承?

2 个答案:

答案 0 :(得分:1)

  1. 您可以通过adb logcatDDMS或Eclipse中的DDMS透视图获取Java堆栈跟踪,这将帮助您确定错误。

  2. 它演示了一个继承树,它得到了大多数现代OO语言的支持。 ViewGroupAdapterView的父级,AbsListView的父级是ListView的父级,是{{1}}的父级。

答案 1 :(得分:1)

  1. 最简单的方法可能就是:

    getListView()setOnItemClickListener(本)。 //在ListActivity.onCreate

  2. 然后添加此方法:

    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