Java 创建ArrayAdapter的自定义抽象类

Java 创建ArrayAdapter的自定义抽象类,java,android,class,android-arrayadapter,abstract,Java,Android,Class,Android Arrayadapter,Abstract,我想创建自己的ArrayAdapter抽象版本,其中添加了自定义意图导航和Toast弹出窗口等功能 以下是我的自定义活动示例: public abstract class RBActivity extends Activity implements IActivity { private Navigator navigator; private Toaster toaster; @Override protected void onCreate(Bundle

我想创建自己的ArrayAdapter抽象版本,其中添加了自定义意图导航和Toast弹出窗口等功能

以下是我的自定义活动示例:

public abstract class RBActivity extends Activity implements IActivity {

    private Navigator navigator;
    private Toaster toaster;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        navigator = new Navigator(this);
        toaster = new Toaster(this);
    }

    public Navigator navigate() {
        return navigator;
    }

    protected void popBurntToast(String msg) {
        toaster.popBurntToast(msg);
    }

    protected void popToast(String msg) {
        toaster.popToast(msg);
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        navigator = null;
        toaster = null;
    }   
}
然后在我的活动中,我只是从RBActivity而不是Activity扩展。然后我可以将其称为.navigate.toSomeActivity;使用我的Navigator类,该类提供了一些方法,可以轻松创建在我的应用程序中导航的意图。我也有自己的活动等

以下是我的navigator类中的示例方法:

public void toSiteSubscribeActivity(Site _site) {
    Intent intent = new Intent(activity, SiteSubscribeActivity.class);
    Bundle b = new Bundle();
    b.putLong(Navigator.INTENT_KEY_CHANNEL_ID, _site.getIdSite());
    b.putString(Navigator.INTENT_KEY_CHANNEL_NAME, _site.getName());
    b.putString(Navigator.INTENT_KEY_CHANNEL_DESCRIPTION, _site.getDescription());
    intent.putExtras(b);
    activity.startActivity(intent);
}    
无论如何,我也想有一个RBArrayAdapter,但我不确定如何创建一个通用版本,它不需要我在大括号ie中指定类类型

public abstract class RBArrayAdapter extends ArrayAdapter<Article> {
    private Navigator navigator;
    private Toaster toaster;

    public RBArrayAdapter(Activity _activity, int _layout, ArrayList<Article> _notes) {
        super(_activity, _layout, _notes);

        navigator = new Navigator(_activity);
        toaster = new Toaster(_activity);
    }


    public Navigator navigate() {
        return navigator;
    }   
}
我试着做一些类似于公共抽象类RBArrayAdapter扩展了ArrayAdapter的事情,但显然不起作用

简而言之,我想问的是如何在尖括号内接受泛型类类型

非常感谢您的帮助,干杯


编辑:看了ArrayAdapter.java之后,我想我需要的是ArrayAdapter语法。现在看看这个

如果我理解正确,你只需要语法就可以了。试试这个:

public abstract class RBArrayAdapter<T> extends ArrayAdapter<T> {
    private Navigator navigator;
    private Toaster toaster;

    public RBArrayAdapter(Activity _activity, int _layout, ArrayList<T> _notes) {
        super(_activity, _layout, _notes);

        navigator = new Navigator(_activity);
        toaster = new Toaster(_activity);
    }


    public Navigator navigate() {
        return navigator;
    }   
}
然后,在实例化RBArrayAdapter子类时,您应该能够替换您喜欢的任何参数,如下所示:

public class MyStringArrayAdapter extends RBArrayAdapter<String> {

    public MyStringArrayAdapter(Activity _activity, int _layout, ArrayList<String> _notes) {
      super(_activity, _layout, _notes);
    }

}

玩得开心。

干杯是的,我在ArrayAdapter.java中看到它是如何完成的后才意识到这一点。请看编辑是的,我在提交答案后看到了您的编辑,但在那一点上,我已经承诺了。此外,我不需要太多的借口来编写代码很高兴你明白了!感谢您现在工作得很好—在使用ArrayAdapter时使用类似的东西—公共类ChatArrayAdapter扩展了RBArrayAdapter实现了AsyncTaskCompleteListener,ActionBar.OnNavigationListener{与购买的一样工作:P