Java 创建ArrayAdapter的自定义抽象类
我想创建自己的ArrayAdapter抽象版本,其中添加了自定义意图导航和Toast弹出窗口等功能 以下是我的自定义活动示例: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
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