Маловероятно, что я когда-либо поддержу добавление отдельного Views
в MergeAdapter
, который будет использоваться в Spinner
.Это означало бы, что я каким-то образом знаю, как создать раскрывающийся список View
для некоторого произвольного View
.
Обходной путь, который я имею для вас, заключается в том, чтобы вы добавили следующее к своему форку MergeAdapter
:
public View getDropDownView(int position, View convertView, ViewGroup parent) {
for (ListAdapter piece : pieces) {
int size = piece.getCount();
if (position < size) {
return (((SpinnerAdapter)piece).getDropDownView(position, convertView, parent));
}
position -= size;
}
return (null);
}
Затем, вместо добавления индивидуума View
через addView()
, добавьте свой собственный ArrayAdapter
для дополнительных данных.Обязательно вызовите setDropDownViewResource()
на всех ваших адаптерах внутри MergeAdapter
- ваш пример кода никогда не вызывал этого, что вызывало некоторые другие ваши трудности (например, «некоторые записи в счетчике пустые»).
Возможно, я объединю это изменение с MergeAdapter
или, возможно, создам с ним подкласс SpinnerMergeAdapter
.Слепой бросок на SpinnerAdapter
пугает меня, поэтому я хочу обдумать это немного больше.При легком тестировании приведенный выше код работает нормально.
Кроме того, удалите все вхождений getApplicationContext()
из своего кода, заменив его на this
илиWhateverYourActivityNameIs.this
в зависимости от ситуации. Только используйте getApplicationContext()
, когда вы знаете , почему вы используете getApplicationContext()
.