【问题标题】:android 101 - listview inheritance questionandroid 101 - listview继承问题
【发布时间】:2009-12-19 21:36:23
【问题描述】:

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

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

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 这不是多重继承吗?

【问题讨论】:

    标签: android inheritance listview


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

    2. 这演示了一个继承树,大多数现代 OO 语言都支持它。 ViewGroupAdapterView 的父级,AbsListViewListView 的父级。

    【讨论】:

      【解决方案2】:
      1. 最简单的方法可能是这样的:

        getListView().setOnItemClickListener(this); //在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

      【讨论】:

        猜你喜欢
        • 2016-11-02
        • 2011-10-04
        • 1970-01-01
        • 2011-04-05
        • 1970-01-01
        相关资源
        最近更新 更多