2013-02-12 46 views
1

我已创建类似于android市场的测试示例viewpager选项卡。但是所有的选项卡都显示相同的listView项目。我需要以这样一种方式实现,即每个选项卡在listView中都有自己的一组项目。如何使用viewpager创建具有不同列表视图项目的选项卡

这是我的MainActivity。

package com.example.viewpagesample; 

import java.util.ArrayList; 
import java.util.List; 

import com.actionbarsherlock.app.SherlockFragmentActivity; 
import com.actionbarsherlock.view.Menu; 
import com.viewpagerindicator.TitlePageIndicator; 

import android.os.Bundle; 
import android.support.v4.app.Fragment; 
import android.support.v4.view.ViewPager; 

public class MainActivity extends SherlockFragmentActivity { 
    private ViewPager mPager; 
    private TitlePageIndicator mIndicator; 
    private MainPagerAdapter mAdapter; 
    private List<Fragment> mFragments; 

    private static final String FRAGMENT1 = Fragment1.class.getName(); 
    private static final String FRAGMENT2 = Fragment1.class.getName(); 
    private static final String FRAGMENT3 = Fragment1.class.getName(); 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 

     // add fragments 
     mFragments = new ArrayList<Fragment>(); 
     mFragments.add(Fragment.instantiate(this, FRAGMENT1)); 
     mFragments.add(Fragment.instantiate(this, FRAGMENT2)); 
     mFragments.add(Fragment.instantiate(this, FRAGMENT3)); 

     // adapter 
     mAdapter = new MainPagerAdapter(getSupportFragmentManager(), mFragments); 

     // pager 
     mPager = (ViewPager) findViewById(R.id.view_pager); 
     mPager.setAdapter(mAdapter); 

     // indicator 
     mIndicator = (TitlePageIndicator) findViewById(R.id.title_indicator); 
     mIndicator.setViewPager(mPager); 
    } 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     return true; 
    } 

} 

片段1类:

package com.example.viewpagesample; 

import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import com.actionbarsherlock.app.SherlockFragment; 

public class Fragment1 extends SherlockFragment { 
    private ListView mList; 

    @Override 
    public View onCreateView(LayoutInflater inf, ViewGroup grp, Bundle icicle) { 
     View v = inf.inflate(R.layout.f_fragment1, grp, false); 
     mList = (ListView) v.findViewById(R.id.listView1); 
     return v; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       getActivity(), android.R.layout.simple_list_item_1, Cheese.STRINGS); 
     mList.setAdapter(adapter); 
    } 

} 

Cheese.STRINGS只是一个字符串数组。

Fragment2类:

package com.example.viewpagesample; 

import android.os.Bundle; 
import android.view.LayoutInflater; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.ArrayAdapter; 
import android.widget.ListView; 

import com.actionbarsherlock.app.SherlockFragment; 

public class Fragment2 extends SherlockFragment { 
    private ListView mList; 

    @Override 
    public View onCreateView(LayoutInflater inf, ViewGroup grp, Bundle icicle) { 
     View v = inf.inflate(R.layout.f_fragment2, grp, false); 
     mList = (ListView) v.findViewById(R.id.listView2); 
     return v; 
    } 

    @Override 
    public void onActivityCreated(Bundle savedInstanceState) { 
     super.onActivityCreated(savedInstanceState); 
     ArrayAdapter<String> adapter = new ArrayAdapter<String>(
       getActivity(), android.R.layout.simple_list_item_1, Cheese.fragment2); 
     mList.setAdapter(adapter); 
    } 
} 

在这里,在fragment2我在列表视图

但TAB2正在用相同的ListView的项目,如tab11 diaplayed使用Cheese.fragment2作为项目?

如何获取tab2中加载的不同项目?

+0

能否请您发布如何实现你的'MainPagerAdapter'?我的代码结构与您的代码结构非常相似,但我无法看到其他片段的内容,请帮助。你可以更新你的问题,我可以upvote。 – Stallman 2014-08-11 05:40:22

回答

1
private static final String FRAGMENT2 = Fragment1.class.getName(); 

应该

private static final String FRAGMENT2 = Fragment2.class.getName(); 

我猜...

+0

Awwwwwwwwww ..这是我犯下这样一个愚蠢的错误..这太好了。你发现它正确。谢谢你:)你做了我的一天:) – shrikanth 2013-02-12 18:11:56

相关问题