新手到android - 了解Abstract类和ListActivity

时间:2015-01-06 18:33:02

标签: android

我正在经历this tutorial,他们在其中创建了一个扩展ListActivity的抽象类,名为AbstractListViewActivity。然后以下列方式使用该类:

public class EndlessListViewActivity extends AbstractListViewActivity
{

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.endless);
    datasource = Datasource.getInstance();
    footerView = ((LayoutInflater) this.getSystemService(Context.LAYOUT_INFLATER_SERVICE)).inflate(R.layout.footer, null, false);
    getListView().addFooterView(footerView, null, false);
    setListAdapter(new CustomArrayAdapter(this, datasource.getData(0, PAGESIZE)));
    getListView().removeFooterView(footerView);

AbstractListViewActivity还包含一个AsyncTask内部类,然后在EndlessListViewActivity中使用。为什么这里使用抽象类?出于什么目的?

我试着查看一些文档,但没有帮助

1 个答案:

答案 0 :(得分:4)

如果您查看the source for the tutorial,则表明此处没有抽象方法,因此此处的抽象关键字仅用于确保您无法在不扩展AbstractListViewActivity的情况下添加extends ListActivity

原因如Ankur Shanbhag so eloquently writes, is

  

抽象类意味着类的定义不完整,因此无法实例化。尽管它没有抽象方法,但它是一个指示符,该类可用于继承。即使它具有其中所有方法的实现,但实现可能仍然不完整,并且必须被扩展类覆盖。

请注意,示例活动extends Activityaccording to the source本身ListActivity - 以及Activity和常规{{1}}都不是抽象的。