【问题标题】:Listview inside tabpager fragment not showingtabpager 片段内的 Listview 未显示
【发布时间】:2015-02-02 22:00:56
【问题描述】:

我试图在一个片段女巫内添加一个列表视图,它也在一个标签主机内。该应用程序没有崩溃或任何东西,但列表视图没有显示任何东西。 这是我的代码:

tabPager 的类

public class TabPagerAdapter extends FragmentPagerAdapter {

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

    @Override
    public Fragment getItem(int index) {

        switch (index) {
            case 0:
                return new FragmentHome();
            case 1:
                return new FragmentBadges();
            case 2:
                return new FragmentBenefits();
        }

        return null;
    }

以下是我想要列表视图的片段:

    public class FragmentBadges extends Fragment {

            @Override
            public View onCreateView(LayoutInflater inflater, ViewGroup container,
                                     Bundle savedInstanceState) {

                View rootView = inflater.inflate(R.layout.fragment_badges_list, null);

                BadgesListAdapter adapter = new BadgesListAdapter(this.getActivity(), getCurrentBadges());
                ListView badgeslist = (ListView) rootView.findViewById(R.id.badges_list);
                badgeslist.setAdapter(adapter);
                badgeslist.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view,
                                            int position, long id) {
                        //TODO do some
                    }
                });

                return rootView;
            }

以下是适配器:

public class BadgesListAdapter extends ArrayAdapter<String> {
    private final Activity context;
    private List<Badge> badges;

    public BadgesListAdapter(Activity context, List<Badge> badges) {
        super(context, R.layout.fragment_badges_listrow);
        this.context = context;
        this.badges = badges;
    }

    @Override
    public View getView(int position, View view, ViewGroup parent) {
        LayoutInflater inflater = context.getLayoutInflater();
        View rowView= inflater.inflate(R.layout.fragment_badges_listrow, null, true);

        TextView txtTitle = (TextView) rowView.findViewById(R.id.text);

        ImageView imageView = (ImageView) rowView.findViewById(R.id.img);

        txtTitle.setText(badges.get(position).getName());

        imageView.setImageResource(badges.get(position).getDrawableValue());

        return rowView;
    }

在调试时,我发现 badsListAdapter 中的 getView 方法从未被调用过。 我对另一个应用程序有相同的代码,但没有 tabpager,而且一切正常......

【问题讨论】:

    标签: java android listview layout android-fragments


    【解决方案1】:

    检查getCurrentBadges() 方法是否不返回空列表。如果是这样,ListView 中没有可显示的数据。

    【讨论】:

    • 所以也许可以尝试使用ArrayAdapter(Context context, int resource, T[] objects) 构造函数通过在BadgesListAdapter 构造函数中调用super(context, R.layout.fragment_badges_listrow, badges.toArray()) 来提供您的数据。
    • 我把所有东西都改成了那个构造函数,但是 getView() 方法它从来没有调用过。
    【解决方案2】:

    按照本教程https://www.youtube.com/watch?v=heR4zhj_wV0

    ,我能够通过在 FragmentBadges 中继承 ListFragment 来使其工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-09
      • 2013-06-08
      • 1970-01-01
      相关资源
      最近更新 更多