【问题标题】:How show ListView in ActionBarTab?如何在 ActionBarTab 中显示 ListView?
【发布时间】:2023-04-06 18:08:01
【问题描述】:

我创建了ActionBarTab,我需要在女巫tab 中添加ListViewListViews 有差异数据。 但我不能在Tabs 中显示我的listView

MainActivity.xml

@SuppressLint("NewApi")
public class MainActivity extends FragmentActivity  implements ActionBar.TabListener{
    static String [] Years;
    static ArrayAdapter<String> adapter;
    static ListView Lists;
    public static Context context;
    public static Activity activity;

    AppSectionsPagerAdapter mAppSectionsPagerAdapter;
    ViewPager mViewPager;
    private String[] tabs = { "tab 1", "tab 2", "tab 3","tab 4","tab 5" };

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
mAppSectionsPagerAdapter = new AppSectionsPagerAdapter(getSupportFragmentManager());

        final ActionBar actionBar = getActionBar();

        actionBar.setHomeButtonEnabled(false);

        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);

        mViewPager = (ViewPager) findViewById(R.id.pager);
        mViewPager.setAdapter(mAppSectionsPagerAdapter);
        mViewPager.setOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() {
            @Override
            public void onPageSelected(int position) {
                actionBar.setSelectedNavigationItem(position);
            }
        });

        for (int i = 0; i < mAppSectionsPagerAdapter.getCount(); i++) {
                    actionBar.addTab(actionBar.newTab().setText(tabs[i])
                            .setTabListener(this));
        }
    }
@Override
    public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    @Override
    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
        mViewPager.setCurrentItem(tab.getPosition());
    }

    @Override
    public void onTabReselected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) {
    }

    public static class AppSectionsPagerAdapter extends FragmentPagerAdapter {

        public AppSectionsPagerAdapter(FragmentManager fm) {
            super(fm);
        }

        @Override
        public Fragment getItem(int i) {
            switch (i) {
                case 0:
                    Years = context.getResources().getStringArray(R.array.YEAR); 
                    Lists = (ListView) activity.findViewById(R.id.list);
                    adapter = new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1, Years);
                    Lists.setAdapter(adapter);
                case 1:

                case 2:

                case 3:

                case 4:

                default:

                     return null;
 }
        }

        @Override
        public int getCount() {
            return 5;
        }

        @Override
        public CharSequence getPageTitle(int position) {
            return "Section " + (position + 1);
        }
    }
    }

注意:在switch case 0 : 中我无法显示ListView

activity_main.xml

<android.support.v4.view.ViewPager xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pager"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" />

</android.support.v4.view.ViewPager>

simple_list_item_1.xml

<?xml version="1.0" encoding="utf-8"?>
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@android:id/text1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:gravity="center_vertical"
    android:minHeight="?android:attr/listPreferredItemHeight"
    android:paddingLeft="6dip"
    android:textAppearance="?android:attr/textAppearanceLarge" />

这是我在string.xml 中的string-array,我从这里填写我的listView

<string-array name="YEAR">
    <item>1992</item>
    <item>1993</item>
    <item>1994</item>
    <item>1995</item>
    <item>1996</item>
    <item>1997</item>
    <item>1998</item>
    <item>1999</item>
</string-array> 

【问题讨论】:

    标签: android android-listview android-viewpager android-fragmentactivity


    【解决方案1】:

    好的。创建一个fragment_section_listview.xml

    <?xml version="1.0" encoding="utf-8"?>
    <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent" >
            <ListView
            android:id="@+id/list"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content" />
    </FrameLayout>
    

    注意:将ListViewactivity_main.xml中删除,改为:

    <android.support.v4.view.ViewPager 
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
    

    然后在您的MainActivity 中创建一个class

    public static class LstView extends Fragment{
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.fragment_section_listview, container, false);
    
            Years = context.getResources().getStringArray(R.array.YEAR); 
            Lists = (ListView) rootView.findViewById(R.id.list);
            adapter = new ArrayAdapter<String>(context,android.R.layout.simple_list_item_1, Years);
            Lists.setAdapter(adapter);
            return rootView;
        }
    }
    

    然后write 这个在你的switch case:

     switch (i) {
       case 0:
         return new LstView();
          Other Code .....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 1970-01-01
      • 2011-01-26
      • 2023-04-03
      • 1970-01-01
      相关资源
      最近更新 更多