ViewPagers'ın bir listesini uygulamak istiyorum. ListView'ın her öğesi ViewPager'dır. Bu şimdiye kadar çalışıyor. Benim sorunum, ViewPager'ın durumunu koruyamıyorum. Örneğin, listeden ilk ViewPager'ın sayfasını değiştirdiğimde, ilk ViewPager görünmeyene kadar aşağı kaydırın ve sonra tekrar yukarı kaydırın, ilk ViewPager ilk sayfasını tekrar gösterir.ListView'de ViewPager'ın durumu nasıl korunur?
ListView için bir tane ve ViewPager için bir tane olmak üzere iki tane bağdaştırıcı yazdım. ListAdapter'te getView yönteminin convertView parametresinden görünümü geri dönüştürmeye çalışıyorum. Doğru yapıp yapmadığımı ve ViewPagerAdapter'te nasıl yapılacağını bilmiyorum.
Herhangi bir fikrin var mı? MyListAdapter gelen
GetView: ViewPagerAdapter dan
@Override
public View getView(int position, View convertView, ViewGroup parent) {
if(convertView == null){
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
mRowView = inflater.inflate(R.layout.listitem, parent, false);
}else{
mRowView=convertView;
}
switch(position){
case 0://Fussball
ViewPagerAdapter fussballAdapter = new ViewPagerAdapter(mContext,"Fussball");
ViewPager fussballPager = (ViewPager) mRowView.findViewById(R.id.viewpager1);
fussballPager.setAdapter(fussballAdapter);
break;
case 1://Handball
ViewPagerAdapter handballAdapter = new ViewPagerAdapter(mContext,"Handball");
ViewPager handballPager = (ViewPager) mRowView.findViewById(R.id.viewpager1);
handballPager.setAdapter(handballAdapter);
break;
//.../
default:
//Do nothing
}
return mRowView;
}
instantiateItem:
@Override
public Object instantiateItem(View pager, int position) {
inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
switch(position){
case 0:
oneLayout=inflater.inflate(R.layout.table_layout, null);
break;
case 1:
oneLayout=inflater.inflate(R.layout.table_layout_second, null);
break;
default:
oneLayout=inflater.inflate(R.layout.table_layout, null);
break;
}
((ViewPager)pager).addView(oneLayout, 0);
return oneLayout;
}
Teşekkür
burada şimdiye kadar benim kodudur! :)
Çağrı cihazı hareket ettiğinde geçerli konumu, örn., 1. sayfadan bir sonraki sayfaya mı ihtiyacınız var? –
ViewPagerAdapter, bir getPosition() işlevine veya içinde bunun gibi bir şeye sahip olmalıdır. –
Teşekkür ederim, Frank. Ben zaten benzer bir çözüm hakkında düşündüm, ama benim sorunum ViewPager konumunu MyListViewAdapter içinden almaktır. Bunu yapması gereken getCurrentItem() adında bir yöntem var, ancak her zaman "0" geri aldım. (Onu ViewView yönteminin içindeki ViewPager nesnesinde kullanıyorum) – kiberNet