ViewPers 목록을 구현하고 싶습니다. ListView의 모든 항목은 ViewPager입니다. 이것은 지금까지 작동합니다. 내 문제는 ViewPager의 상태를 유지할 수 없다는 것입니다. 예를 들어 목록의 첫 번째 ViewPager 페이지를 변경할 때 첫 번째 ViewPager가 더 이상 표시되지 않을 때까지 아래로 스크롤 한 다음 다시 위로 스크롤하면 첫 번째 ViewPager에 첫 번째 페이지가 다시 표시됩니다.ListView에서 ViewPager의 상태를 유지하는 방법은 무엇입니까?
두 개의 어댑터를 작성했습니다. 하나는 ListView 용이고 다른 하나는 ViewPager 용입니다. ListView에서 getView 메서드의 convertView 매개 변수에서 뷰를 재활용하려고합니다. ViewPagerAdapter에서 어떻게하는지 잘 모르겠다.
아이디어가 있으십니까? MyListAdapter에서
의 getView : ViewPagerAdapter에서
@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;
}
감사
여기에 지금까지 내 코드입니다! :)
페이저가 움직일 때 현재 위치를 찾으셔야합니다.) 첫 페이지에서 다음 페이지로 이동 하시겠습니까? –
ViewPagerAdapter에는 getPosition() 함수 또는 이와 비슷한 것이 있어야합니다. –
감사합니다, Frank. 이미 비슷한 솔루션에 대해 생각했지만 내 문제는 MyListViewAdapter 내부에서 현재 ViewPager 위치를 얻는 것입니다. 그것을해야 getCurrentItem()라는 메서드가 있지만, 나는 항상 "0"돌아옵니다. (필자는 getView 메소드 내 ViewPager 객체에서이 객체를 사용합니다.) – kiberNet