Ich habe einen einfachen Viewpager mit ein paar Ansichten. Ich habe eine Schaltfläche in jeder Ansicht, die einmal die Hintergrundfarbe der Ansicht auf eine vorher festgelegte Farbe ändern sollte.Viewpager "ViewGroup" ändern Hintergrundfarbe Laufzeit
In meinem instantiateItem habe ich folgendes:
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;
}
habe ich eine andere Funktion (PopulateView), die meiner Ansicht nach der Zeichnung und die Schaffung der Taste übernimmt.
Ich dachte daran, eine Instanz von "ViewGroup layout" als Klassenvariable beizubehalten und sie zu verwenden, aber das Klicken auf die Schaltfläche in Ansicht 1 würde dazu führen, dass sich eine zufällige Ansicht (zB Ansicht 2) ändert.
Also hielt ich eine Kopie von „Viewgroup Sammlung“ und verwendet
collection.getChildAt(position).setBackgroundColor(mContext.getResources().getColor(sky));
aber die App mit dem Fehler java.lang.NullPointerException auf der letzten Ansicht Farbänderung würde abstürzen: Der Versuch, virtuelle Methode aufzurufen ' nichtig android.view.View.setBackgroundColor (int)‘auf einer null-Objekt Referenz
collection = {[email protected]} "android.support.v4.view.ViewPager{e1f06a0 VFED..... ......ID 0,0-1080,1536 #7f0d0091 app:id/viewpager}"
mContext = {[email protected]}
position = 2
Das merkwürdigste ist, wenn ich nach innen schauen‚Sammlung‘, und erweitern Sie die‚Kinder‘gibt es nur 2 Kinder aufgeführt. Es sollte 3 sein. Ich kann nicht verstehen, warum das so ist.
Kann jemand mir bitte helfen?