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);