【发布时间】:2014-02-03 15:15:18
【问题描述】:
我想创建自己的 ArrayAdapter 抽象版本,它添加了自定义 Intent Navigation 和 Toast 弹出窗口等功能。
这是我的自定义 Activity 的示例:
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。然后我可以调用 this.navigate().toSomeActivity();使用我的Navigator class,它具有轻松创建意图以在我的应用程序中导航的方法。我也有自己的RBListActivity 等
这是我的导航器类的示例方法:
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 但我不确定如何创建一个不需要我在 大括号内指定类类型的通用版本,即
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;
}
}
我尝试过类似public abstract class RBArrayAdapter extends ArrayAdapter<?> 的操作,但它显然不起作用...
我想简而言之,我问的是如何在尖括号中接受泛型类类型
非常感谢任何帮助,干杯
编辑:在查看 ArrayAdapter.java (https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.java) 之后,我认为我需要的是 ArrayAdapter<T> 语法。现在调查一下
【问题讨论】:
标签: java android class android-arrayadapter abstract