2009-12-19 46 views
0

我在我的扩展ListActivity类中有一个ListView。android 101 - 列表视图继承问题

然后,我有以下代码来检测列表

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中定义的。 这怎么可能?转眼睛

2. 此外,我不知道我理解这一行: android.widget.AdapterView 时,它也从android.view.ViewGroup 继承不是多重继承?

回答

1
  1. 您可以通过adb logcatDDMS得到一个Java堆栈跟踪,或在Eclipse中DDMS角度来看,这将有助于你拖住你的错误。

  2. 这演示了大多数现代OO语言支持的继承树。 ViewGroupAdapterView的母公司,它是AbsListView的母公司,它是ListView的母公司。

1
  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 
} 
  • 你可以看看继承树 - 那里你可以看到,多重继承涉及在这种情况下:)

    • java.lang.Object继承
    • android.view.View
    • android.view.ViewGroup
    • android.widget.AdapterView
    • android.widget.AbsListView
    • android.widget.ListView