Android 为什么我的listview不显示任何元素?

Android 为什么我的listview不显示任何元素?,android,listview,android-fragments,android-listview,Android,Listview,Android Fragments,Android Listview,我有一个ViewPager,我想用它来显示一些列表视图。我使用的是一个具有自定义列表视图的片段 这是我的片段XML(片段列表视图): 这是我的列表项XML(片段列表项): 这是我试图显示的片段: public class ListViewFragment extends Fragment { private ListView listView; private ProductsListViewAdapter adapter; private List<

我有一个
ViewPager
,我想用它来显示一些
列表视图。我使用的是一个具有自定义
列表视图的
片段


这是我的片段XML(片段列表视图):



这是我的列表项XML(片段列表项):



这是我试图显示的片段:

public class ListViewFragment extends Fragment {

    private ListView listView;
    private ProductsListViewAdapter adapter;
    private List<String> params;
    private int index;
    private String category, subCategory;
    private List<Product> products;
    private TextView productTitle, productDescription, productCategory, productPrice;

    public ListViewFragment(int index, String category, String subCategory, List<Product> products) {
        this.index = index;
        this.category = category;
        this.subCategory = subCategory;
        this.products = products;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_list_view, null);

        Product product = products.get(0);
        String title = product.getTitle();
        Log.d("Title", title); // prints out the title
        listView = (ListView) view.findViewById(R.id.productsListView);
        adapter = new ProductsListViewAdapter(getActivity(), products);
        listView.setAdapter(adapter);

        return inflater.inflate(R.layout.fragment_list_view, container, false);
    }

}
公共类ListViewFragment扩展了片段{
私有列表视图列表视图;
私有产品列表视图适配器;
私有列表参数;
私有整数索引;
私有字符串类别,子类别;
私人上市产品;
私有文本视图productTitle、productDescription、productCategory、productPrice;
公共ListViewFragment(int索引、字符串类别、字符串子类别、列表产品){
这个指数=指数;
this.category=类别;
this.subCategory=子类别;
这一点。产品=产品;
}
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图=充气机。充气(R.layout.fragment\u list\u视图,空);
产品=产品。获取(0);
字符串title=product.getTitle();
Log.d(“Title”,Title);//打印出标题
listView=(listView)view.findViewById(R.id.productsListView);
适配器=新产品ListViewAdapter(getActivity(),products);
setAdapter(适配器);
返回充气机。充气(R.layout.fragment\u list\u视图,容器,错误);
}
}

这是我的适配器:

public class ProductsListViewAdapter extends BaseAdapter{

    private Activity activity;
    private List<Product> products;
    private LayoutInflater inflater;

    public ProductsListViewAdapter(Activity activity, List<Product> products) {
        this.activity = activity;
        this.products = products;
    }

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

    @Override
    public Object getItem(int position) {
        return products.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {

        if(inflater == null)
            inflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        if(convertView == null)
            convertView = inflater.inflate(R.layout.fragment_list_item, null);

        TextView title = (TextView) convertView.findViewById(R.id.productTitle);
        TextView description = (TextView) convertView.findViewById(R.id.productDescription);
        TextView category = (TextView) convertView.findViewById(R.id.productCategory);
        TextView price = (TextView) convertView.findViewById(R.id.productPrice);

        Product product = products.get(position);

        title.setText(product.getTitle());
        description.setText(product.getDescription());
        category.setText(product.getCategory());
        price.setText(product.getPrice());

        return convertView;
    }

}
公共类ProductsListViewAdapter扩展了BaseAdapter{
私人活动;
私人上市产品;
私人充气机;
公共产品ListViewAdapter(活动,列出产品){
这个。活动=活动;
这一点。产品=产品;
}
@凌驾
public int getCount(){
返回产品。大小();
}
@凌驾
公共对象getItem(int位置){
退货。获得(职位);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
如果(充气器==null)
充气器=(LayoutInflater)activity.getSystemService(Context.LAYOUT\u充气器\u SERVICE);
if(convertView==null)
convertView=充气机。充气(R.layout.fragment\u list\u项,空);
TextView title=(TextView)convertView.findViewById(R.id.productTitle);
TextView description=(TextView)convertView.findViewById(R.id.productDescription);
TextView类别=(TextView)convertView.findViewById(R.id.productCategory);
TextView价格=(TextView)convertView.findViewById(R.id.productPrice);
产品=产品。获取(位置);
title.setText(product.getTitle());
description.setText(product.getDescription());
category.setText(product.getCategory());
price.setText(product.getPrice());
返回视图;
}
}


运行此代码时,
列表视图中不会显示任何内容。我做错了什么?

你的片段正在返回:

return inflater.inflate(R.layout.fragment_list_view, container, false);
但是,您的适配器设置在不同的视图中:

View view = inflater.inflate(R.layout.fragment_list_view, null);
Product product = products.get(0);
String title = product.getTitle();
Log.d("Title", title); // prints out the title
listView = (ListView) view.findViewById(R.id.productsListView);
adapter = new ProductsListViewAdapter(getActivity(), products);
listView.setAdapter(adapter);
因为返回了另一个视图,所以将永远不会使用


更改
返回充气机。充气(R.layout.fragment\u list\u视图,容器,false)
返回视图

您不应该在子类中重载片段的构造函数您的宿主活动在哪里?要详细说明@Blackbelt的观点,请查看中的代码示例。你需要有一个无参数的公共构造函数,用bundle和setArguments()复制
newInstance()
静态方法,以使片段在保存/还原时正常工作。好的,我来检查一下!谢谢
return inflater.inflate(R.layout.fragment_list_view, container, false);
View view = inflater.inflate(R.layout.fragment_list_view, null);
Product product = products.get(0);
String title = product.getTitle();
Log.d("Title", title); // prints out the title
listView = (ListView) view.findViewById(R.id.productsListView);
adapter = new ProductsListViewAdapter(getActivity(), products);
listView.setAdapter(adapter);