Я хотел бы создать свою собственную абстрактную версию ArrayAdapter, которая добавит функциональность пользовательских Intent
Навигация и Toast
всплывающие окна и другие.Создание пользовательского абстрактного класса ArrayAdapter
Вот пример моей пользовательской активности:
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<?>
, но это, очевидно, не работает ...
Я думаю, в общем, я спрашиваю, как принять общий тип класса в заостренный брекет
Любая помощь очень ценится, ура
EDIT: хорошо посмотрев на ArrayAdapter.java (https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.java) Я думаю, что мне нужно ArrayAdapter<T>
Синтаксис. глядя на это сейчас
Cheers yep Я действительно понял это, посмотрев, как это делается в ArrayAdapter.java (https://github.com/android/platform_frameworks_base/blob/master/core/java/android/widget/ArrayAdapter.java) см. В редакции – wired00
Да, я видел ваше редактирование после того, как я представил свой ответ, но в тот момент я был совершен. Кроме того, мне не нужно много поводов для написания кода. :) Рад, что ты это понял! –
Спасибо, что теперь отлично работаем, просто используем что-то подобное при использовании ArrayAdapters - 'public class ChatArrayAdapter extends RBArrayAdapter реализует AsyncTaskCompleteListener, ActionBar.OnNavigationListener {' работает так же, как купленный: P –
wired00