Android - 如何使扩展ListView的Activity也扩展我的BaseView

时间:2012-05-26 16:38:08

标签: android android-layout

我的BaseActivity有我的标题:

public class BaseActivity extends Activity
{
        @Override
        public void setContentView(int layoutResID) {
            super.setContentView(layoutResID);      
        {
            Button home_header = (Button)findViewById(R.id.home_header);
            Button questions_header = (Button)findViewById(R.id.questions_header);

            home_header.setOnClickListener(new Button.OnClickListener() 
            {  
                public void onClick(View v) 
                {                   
                  Intent myIntent = new Intent( BaseActivity.this , ProblemioActivity.class);
                  BaseActivity.this.startActivity(myIntent);
                }
            });                 

            questions_header.setOnClickListener(new Button.OnClickListener() 
            {  
                public void onClick(View v) 
                {                   
                  Intent myIntent = new Intent( BaseActivity.this , MyQuestionsActivity.class);
                  BaseActivity.this.startActivity(myIntent);
                }
            });         
        }
    }
}

当我像这样扩展它时它会起作用:

public class ProblemActivity extends BaseActivity

但如果我有一个扩展ListActivity的类,我也不能扩展BaseActivity。有没有办法让我强制扩展ListActivity的类也能够拥有标题?现在我通过扩展BaseActivity使它们具有头部,但是由于一些扩展了ListActivity,我似乎无法这样做。

如何解决这个问题并使扩展ListActivity的类也能够拥有标题?

谢谢!

1 个答案:

答案 0 :(得分:1)

您可以从BaseActivity延长ListActivity,但这会使您的所有活动成为ListActivity,并可能会对其他非ListActivity活动造成问题。

ListActivity不需要使用ListView。您可以在普通活动中使用ListView。如果要继续对所有活动使用BaseActivity,请不要使用ListActivity并自行管理ListView。另一种方法是制作自己的ListActivity BaseActivity。这是一个基本的例子:

class MyBaseListActivity extends BaseActivity {

  protected ListView getListView() {
    return (ListView)findViewById(android.R.id.list);
  }

  protected ListAdapter getListAdapter() {
    return getListView().getAdapter();
  }

  ...


}