【问题标题】:How to know the methods I should implement in a class that extends another class如何知道我应该在扩展另一个类的类中实现的方法
【发布时间】:2012-10-18 08:13:26
【问题描述】:

我有这门课

public class AdapterListView extends BaseAdapter { }

如果我没有实现某些方法,例如 getCount(),则会出现错误

错误是:

AdapterListView 类型必须实现继承的抽象方法 Adapter.getCount()

BaseAdapter 类实现了ListAdapterSpinnerAdapter。这些接口继承了Adapter接口的方法,但是这个接口有以下抽象方法:

  • getCount()
  • getItem ()
  • getItemId ()
  • getItemViewType ()
  • getView ()
  • getViewTypeCount ()
  • hasStableIds ()
  • isEmpty ()
  • registerDataSetObserver ()
  • 注销DataSetObserver ()

查看Adapter接口了解更多详情。

但我只是实现 getCount()、getItem()、getItemId()、getView()。并且编译器不会给出这个错误。为什么会这样?

【问题讨论】:

  • 你的帖子很混乱!如果我不实现某些方法,例如 getCount() VS,我会得到一个错误,但我只是实现 getCount(),......无论如何,你可以让 Eclipse 为你做这件事。创建一个类扩展一个抽象类并保存。将鼠标悬停在标记为红色的类名上,然后单击“实现方法”。否则,只需查看他们的类定义,对于您的特定类,例如 developer.android.com/reference/android/widget/BaseAdapter.html
  • 我认为这并不令人困惑。我说如果我不实施,我就会得到错误。但是我实现了这个方法。 :-) 谢谢!

标签: android inheritance interface adapter


【解决方案1】:

不要更改这些方法的名称

getCount();

getItem();

getItemId();

getItemViewType();

getView();

getViewTypeCount();

【讨论】:

    【解决方案2】:

    你不需要实现这些方法的原因是它们已经在抽象类BaseAdapter中实现了。

    查看源代码链接:BaseAdapter

    类类型abstract 可以实现一些方法,并为扩展它的类留下一些方法。

    问候。

    【讨论】:

    • 谢谢。你的回答对我很有用。也感谢您提供此链接。
    • 即BaseAdapter类没有实现getCount()、getItem()、getItemId()和getView()方法。所以我必须在我的 AdapterListView 类中实现这些方法。
    • 很高兴为您提供帮助。恭喜您提出问题,这表明您对无意义的事物非常感兴趣。
    【解决方案3】:

    如果你扩展一个类,你不需要实现这个类的所有方法。某些方法必须至少像您的情况一样声明 getCount()、getId() 等,如果需要,您也可以覆盖它们。在 Eclipse 中,当您悬停类名并单击它时,您可以看到必须声明哪些方法。

    【讨论】:

      猜你喜欢
      • 2021-11-19
      • 1970-01-01
      • 2015-11-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多