Ich bin Ansichten (nicht Fragmente) in meiner Viewpager-Implementierung aufblasen. Meine Hauptklasse erweitert Aktivität.ListView nicht in ViewPager gefunden Zeige Inflater-Implementierung
Die Seite 1 des viewpager bläht eine Ansicht auf, die aus Textansichten besteht. Seite 2 bläst ein Achartengine-Diagramm auf. Alles funktioniert gut.
Page 3 soll eine Listenansicht mit einem benutzerdefinierten Adapter aufblasen. Da ich jedoch nur die Aktivität erweitert habe, ist setListAdapter nicht verfügbar.
Wenn ich die Hauptklasse ändern ListActivity zu verlängern, dann scheitert die gesamte Aktivität auf Last, weil es nicht die android.R.id.list Ansicht finden (weil es ist noch nicht aufgeblasen)
Dies ist der instantiate Code I
public class SummaryPagerAdapteri extends PagerAdapter{
@Override
public int getCount() {
return 5;
}
@Override
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
int resId = 0;
View view = null;
switch (position) {
case 0:
//find and inflate the view
resId = R.layout.recordsummary_one;
view = inflater.inflate(resId, null);
//do stuff
break;
case 1:
//find and inflate the view
resId = R.layout.recordsummary_two;
view = inflater.inflate(resId, null);
Context ctx = view.getContext();
//do stuff
break;
case 2:
resId = R.layout.recordsummary_three;
view = inflater.inflate(resId, null);
Context tctx = view.getContext();
if(pdn != null){
adapter = new SummaryNotesAdapter(tctx,pdn);
setListAdapter(adapter);
}
break;
case 3:
resId = R.layout.recordsummary_four;
view = inflater.inflate(resId, null);
//ToDo
break;
case 4:
resId = R.layout.recordsummary_five;
view = inflater.inflate(resId, null);
//ToDo
break;
}
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public void destroyItem(View arg0, int arg1, Object arg2) {
((ViewPager) arg0).removeView((View) arg2);
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == ((View) arg1);
}
@Override
public Parcelable saveState() {
return null;
}
}
Irgendwelche Ideen sind mit, wie ich setListAdapter (Adapter) ohne Verlängerung Listview verwenden kann, oder wie ich Listview ohne die Aktivität verlängern kann versagt, wenn es nicht die uninflated Ansicht findet auf erste Ladung?
Vielen Dank
Dave
Dank adamk arbeitet einen Reiz. Ich habe die zweite Option benutzt. Bei der Verwendung musste ich die Listview-ID in der Layout-Datei von "@android: id/list" in "@ + id/whatever_you_want" ändern. – DaveSav