Можно ли использовать один класс адаптера (и его экземпляр) (например, собственный подкласс ArrayAdapter<ownDataType>
для двух (или более) разных представлений?
В моем Activity
у меня есть два Spinner
объекта, которые используются для отображения (и выбора) связанных данных: список родительских категорий и список подкатегорий выбранной родительской категории. Конечно, список в подкатегории - Spinner
обновляется (устанавливает новый ArrayAdapter
), когда изменяется родительская категория. Однако я также хочу иметь возможность установить подкатегорию напрямую (и автоматически выбрать родительскую категорию) при создании действия. Это усложняет ситуацию.
Моя идея для простого и понятного решения сейчас состоит в том, чтобы создать ОДИН собственный класс-адаптер (например, полученный из ArrayAdapter<CategoryPair>
, где CategoryPair
- простой класс, содержащий пару родительских и подкатегорий), и это собственный класс адаптера обрабатывает всю логику для обеспечения согласованности данных (намного проще).
В методе getView(int position, View convertView, ViewGroup parent)
класса Adapter
мне нужно надежно распознать, для какого из двух объектов Spinner
в моей деятельности мне нужно создать представление.
Можно ли положиться на параметр parent
?
Как вы думаете, моя идея хорошая?
Редактировать: Пример кода:
Мой класс адаптера:
public class CategoryPair
{
Category parent;
Category sub;
}
public class CategoriesAdapter extends ArrayAdapter<CategoryPair> {
private Spinner parentSpinner;
private Spinner subSpinner;
public CategoriesAdapter(Context context, int textViewResourceId, Spinner par, Spinner sub) {
super(context, textViewResourceId);
parentSpinner = par;
subSpinner = sub;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if (parent == parentSpinner)
{
//
}
else if (parent == subSpinner)
{
//
}
else
{
Log.e(TAG, "Invalid parent in CategoriesAdapter");
}
return super.getView(position, convertView, parent);
}