2011-11-27 3 views
0

내 응용 프로그램에서 viewpager를 사용하려고합니다.Viewpager 및 listviews

목록 뷰가있는 4 개의보기 페이지를 만들고 모든 목록보기 데이터 만 변경됩니다. 앱이 모든 페이지를 시작할 때 처음 데이터가로드되지만 첫 번째 데이터 만 표시됩니다.

그러나 나는 할 수 없다. 내 조각은 모든 페이지가 바뀌고 모든 listviews는 항상 같은 데이터를 가지고있다. 나는 이것에 관해 나를 도와 줘. 나는 stackoverflow에서 이것을 요구했지만 아무도 대답을하지 않는다. 그것에 관한 소식통이 링크를 보낼 수 있습니까?

답변

5

다음은 다른 ListView의 as 페이지가있는 ViewPager의 구현물입니다.

MainActivity.java

public class MainActivity extends Activity { 

    /** Called when the activity is first created. */ 

private Context mContext; 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     mContext = this; 
     setContentView(R.layout.main); 
     ListView listview1 = new ListView(mContext); 
     ListView listview2 = new ListView(mContext); 
     ListView listview3 = new ListView(mContext); 

     Vector<View> pages = new Vector<View>(); 

     pages.add(listview1); 
     pages.add(listview2); 
     pages.add(listview3); 

     ViewPager vp = (ViewPager) findViewById(R.id.viewpager); 
     CustomPagerAdapter adapter = new CustomPagerAdapter(mContext,pages); 
     vp.setAdapter(adapter); 

     listview1.setAdapter(new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1,new String[]{"A1","B1","C1","D1"})); 
     listview2.setAdapter(new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1,new String[]{"A2","B2","C2","D2"})); 
     listview3.setAdapter(new ArrayAdapter<String>(mContext, android.R.layout.simple_list_item_1,new String[]{"A3","B3","C3","D3"})); 

    } 
} 

CustomPagerAdapter.java

public class CustomPagerAdapter extends PagerAdapter { 

private Context mContext; 
private Vector<View> pages; 

public CustomPagerAdapter(Context context, Vector&lt;View&gt; pages) { 
    this.mContext=context; 
    this.pages=pages; 
} 

@Override 
public Object instantiateItem(ViewGroup container, int position) { 
    View page = pages.get(position); 
    container.addView(page); 
    return page; 
} 

@Override 
public int getCount() { 
    return pages.size(); 
} 

@Override 
public boolean isViewFromObject(View view, Object object) { 
    return view.equals(object); 
} 

@Override 
public void destroyItem(ViewGroup container, int position, Object object) { 
    container.removeView((View) object); 
} 

} 

더 많은 정보 here.