2009-12-19 74 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