gpt4 book ai didi

java - 创建 ArrayAdapter 的自定义抽象类

转载 作者:太空宇宙 更新时间:2023-11-04 15:09:28 24 4
gpt4 key购买 nike

我想创建我自己的 ArrayAdapter 抽象版本,它添加了自定义 Intent 的功能导航和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;
}
}

然后在我的 Activity 中,我只需从 RBActivity 扩展即可而不是Activity 。然后我可以调用 this.navigate().toSomeActivity();使用我的Navigator class它具有轻松创建 Intent 来导航我的应用程序的方法。我也有自己的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>句法。现在就来研究一下

最佳答案

如果我理解正确的话,你只需要语法就可以完成这项工作。试试这个:

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;
}
}

那么您应该能够用您喜欢的任何参数替换 <T>当您实例化 RBArrayAdapter 子类时(类似这样):

public class MyStringArrayAdapter extends RBArrayAdapter<String> {

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

}

玩得开心。

关于java - 创建 ArrayAdapter 的自定义抽象类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21530909/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com