【问题标题】:Android ListView Items on fragment not Showing片段上的Android ListView项目不显示
【发布时间】:2017-11-09 05:27:04
【问题描述】:

我正在关注 Bucky 的关于 ListView 的教程(我不确定你们现在是不是他),并且还编辑了我的代码,因为它位于片段中。我设法消除了错误,但列表项没有显示。

这是片段代码:

    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.fragment_master,container,false);

    String[] foods = {"Shanghai","Spaghetti"};
    ListAdapter lAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,foods);

    ListView masterListView = (ListView) view.findViewById(R.id.masterListView);
    masterListView.setAdapter(lAdapter);

    masterListView.setOnItemClickListener(
            new AdapterView.OnItemClickListener(){
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    String doof = String.valueOf(parent.getItemAtPosition(position));
                    Toast.makeText(getActivity(),doof,Toast.LENGTH_LONG).show();
                }
            });

    return view;
}

这是xml:

<ListView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@+id/masterListView" />

谢谢

我忘了提到我使用抽屉和标签布局。我不知道这是否重要,但这是我的代码:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_menu);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                    .setAction("Action", null).show();
        }
    });

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    ViewPager vp_pages= (ViewPager) findViewById(R.id.vp_pages);
    PagerAdapter pagerAdapter=new FragmentAdapter(getSupportFragmentManager());
    vp_pages.setAdapter(pagerAdapter);

    TabLayout tab_pages= (TabLayout) findViewById(R.id.tab_pages);
    tab_pages.setupWithViewPager(vp_pages);

}

和:

public class FragmentAdapter extends FragmentPagerAdapter {
    public FragmentAdapter(FragmentManager supportFragmentManager) {
        super(supportFragmentManager);
    }

    @Override
    public Fragment getItem(int position) {
        switch (position){
            case 0:
                return new tab1();
            case 1:
                return new tab2();
        }
        return null;
    }

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

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position){
            //
            //Your tab titles
            //
            case 0:return "Tab1";
            case 1:return "Tab2";
            default:return null;
        }
    }
}

【问题讨论】:

  • 我可以看到适配器吗?还有我假设的自定义行
  • 您上面的代码运行良好。我认为您在附加片段时遇到了一些问题。
  • 在您添加片段的位置发布您的活动代码。
  • 我忘记提及的另一件事是我同时使用抽屉式布局和选项卡式布局,所以我的片段代码是:我忘记提及的另一件事是我同时使用抽屉式布局和选项卡式布局,所以我在 onCreate 中的片段代码: ViewPager vp_pages= (ViewPager) findViewById(R.id.vp_pages); PagerAdapter pagerAdapter=new FragmentAdapter(getSupportFragmentManager()); vp_pages.setAdapter(pagerAdapter); TabLayout tab_pages= (TabLayout) findViewById(R.id.tab_pages); tab_pages.setupWithViewPager(vp_pages);

标签: android listview android-fragments


【解决方案1】:

而不是这个:

ListAdapter lAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1,foods);

使用:

ListAdapter lAdapter = new ArrayAdapter<String>(getContext(), android.R.layout.simple_list_item_1,foods);

因为 getActivity() 提供了您的片段所在的活动的上下文,而 getContext() 获取了您的列表视图适配器所在的片段的上下文。

【讨论】:

  • 希望这行得通。如果它有效,请不要忘记将此帖子标记为答案,因为它将帮助其他人将来遇到同样的问题。快乐编码:)
  • 很抱歉,它仍然无法正常工作。没有什么变化。列表仍未显示
【解决方案2】:

放置:

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);

FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG)
                .setAction("Action", null).show();
    }
});

DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
        this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
drawer.setDrawerListener(toggle);
toggle.syncState();

NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
navigationView.setNavigationItemSelectedListener(this);

ViewPager vp_pages= (ViewPager) findViewById(R.id.vp_pages);
PagerAdapter pagerAdapter=new FragmentAdapter(getSupportFragmentManager());
vp_pages.setAdapter(pagerAdapter);

TabLayout tab_pages= (TabLayout) findViewById(R.id.tab_pages);
tab_pages.setupWithViewPager(vp_pages);

之间:

    @Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    super.onViewCreated(view, savedInstanceState);

//  Put it here.

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多