Java ListView Android中的getView停止工作,只显示第一个数据
我在一些文件中做了一些更改(不是我遇到问题的文件——或者我认为是的),结果我的ListView突然停止了工作。问题在于,尽管作为参数传递的数据正确,但ListView只生成0位置 然而,我无法理解为什么。这是我的密码:Java ListView Android中的getView停止工作,只显示第一个数据,java,android,listview,Java,Android,Listview,我在一些文件中做了一些更改(不是我遇到问题的文件——或者我认为是的),结果我的ListView突然停止了工作。问题在于,尽管作为参数传递的数据正确,但ListView只生成0位置 然而,我无法理解为什么。这是我的密码: public BussinessAdapter(Context context, ArrayList<BussinessListClass> listData) { this.listbussiness = listData; Sys
public BussinessAdapter(Context context, ArrayList<BussinessListClass> listData) {
this.listbussiness = listData;
System.out.println("Business Adapter : Result :"+listData.toString());
layoutInflater = LayoutInflater.from(context);
options = new DisplayImageOptions.Builder().resetViewBeforeLoading(true)
.cacheInMemory(true).cacheOnDisc(true).displayer(new RoundedBitmapDisplayer(20)).build();
imageloader = ImageLoader.getInstance();
imageloader.init(ImageLoaderConfiguration.createDefault(context));
}
@Override
public int getCount() {
System.out.println("Total number is:"+listbussiness.size());
return listbussiness.size();
}
@Override
public Object getItem(int position) {
return listbussiness.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
System.out.println("Called at position :" + position);
holder = new ViewHolder();
if (convertView == null) {
convertView = layoutInflater.inflate(R.layout.bussinesslist, null);
holder.name = (TextView) convertView.findViewById(R.id.name);
holder.title = (TextView) convertView.findViewById(R.id.titleNearby);
holder.imageView = (ImageButton) convertView.findViewById(R.id.thumbImageNearby);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
BussinessListClass item = (BussinessListClass) listbussiness.get(position);
holder.name.setText(item.getName());
holder.title.setText(item.getTitle());
if (holder.imageView != null) {
holder.imageView.setTag(item.getPhoto() + item.getName());
imageloader.displayImage(item.getPhoto(), holder.imageView, options, animateFirstListener);
}
return convertView;
}
公共业务适配器(上下文,ArrayList listData){
this.listbussiness=listData;
System.out.println(“业务适配器:结果:+listData.toString());
layoutInflater=layoutInflater.from(上下文);
options=new DisplayImageOptions.Builder().resetViewBeforeLoading(真)
.cacheInMemory(true).cacheOnDisc(true).displayer(新的RoundedBitmapDisplayer(20)).build();
imageloader=imageloader.getInstance();
init(ImageLoaderConfiguration.createDefault(上下文));
}
@凌驾
public int getCount(){
System.out.println(“总数为:“+listbussiness.size());
返回listbusiness.size();
}
@凌驾
公共对象getItem(int位置){
返回listbussiness.get(位置);
}
@凌驾
公共长getItemId(int位置){
返回位置;
}
@凌驾
公共视图getView(最终整数位置、视图转换视图、视图组父视图){
//TODO自动生成的方法存根
System.out.println(“在位置:+位置调用”);
holder=新的ViewHolder();
if(convertView==null){
convertView=LayoutFlater.inflate(R.layout.businessList,null);
holder.name=(TextView)convertView.findViewById(R.id.name);
holder.title=(TextView)convertView.findViewById(R.id.titleNearby);
holder.imageView=(ImageButton)convertView.findViewById(R.id.ThumbImageNearly);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
businessListClass项=(businessListClass)listBusiness.get(位置);
holder.name.setText(item.getName());
holder.title.setText(item.getTitle());
if(holder.imageView!=null){
holder.imageView.setTag(item.getPhoto()+item.getName());
displayImage(item.getPhoto(),holder.imageView,options,animateFirstListener);
}
返回视图;
}
奇怪的是:
- 数据正在正确打印出来
- 在getCount中,我确实看到了4,这是ArrayList的大小
- 但是getView只在位置0时被调用
解决方案:问题出在xml中,我的身高是xml的10倍,所以我认为只有一个项目,但这是因为我必须滚动查看其他项目。是否更改了listview的大小,是否可以滚动查看更多项目。它可能只调用一个位置,并且它只能显示在任何时候使用git bisect查找错误的提交,甚至错误的行,然后修复它或在不理解它为什么会导致此问题时发布它。您是否更改了listview的大小,你能滚动它并看到更多的项目吗?我看不到代码中的差异——奇怪的是,如果我从市场下载我的应用程序,它会正常播放。我需要调试它的帮助。@PulkitSethi是的,就是这样!回答这个问题,我就会接受它——我只需要滚动到最底部M就可以看到数据,xml中一定有什么东西改变了我的listview高度。@ghostrider完成了。谢谢