У меня есть простой просмотрщик с несколькими просмотрами. У меня есть кнопка в каждом представлении, которая после нажатия на нее должна изменить цвет фона представления на заранее определенный цвет.
В моем экземпляре Item у меня есть следующее:
public CustomPagerAdapter(Context context) {
mContext = context;
}
@Override
public Object instantiateItem(ViewGroup collection, int position) {
LayoutInflater inflater = LayoutInflater.from(mContext);
ViewGroup layout = (ViewGroup) inflater.inflate(R.layout.child_item, collection, false);
PopulateView(position);
collection.addView(layout);
return layout;
}
У меня есть еще одна функция (populateView), которая рисует мое представление и создает кнопку.
Я думал о том, чтобы удерживать экземпляр «раскладки ViewGroup» в качестве переменной класса и использовать его, но нажатие кнопки в представлении 1 приведет к изменению цвета фона случайного представления (скажем, представления 2).
Поэтому я сохранил копию «коллекции ViewGroup» и использовал
collection.getChildAt(position).setBackgroundColor(mContext.getResources().getColor(sky));
но приложение вылетит при последнем изменении цвета представления с ошибкой java.lang.NullPointerException: попытка вызвать виртуальный метод «void android.view.View.setBackgroundColor (int)» для нулевой ссылки на объект
collection = {ViewPage@4834} "android.support.v4.view.ViewPager{e1f06a0 VFED..... ......ID 0,0-1080,1536 #7f0d0091 app:id/viewpager}"
mContext = {MainActivity@4835}
position = 2
Самое странное, что когда я заглядываю внутрь «коллекции» и раскрываю «Дети», в списке только 2 ребенка. Должно быть 3. Я не могу понять, почему это так.
Кто-нибудь может мне помочь?