求助,ListView没有执行getView方法

在一个Fragment中有一个ViewPager,ViewPager有两个页面,其中一个页面是列表页,使用了ListView,自定义了适配器,数据也确实能够查询到,但始终没有执行getView方法。这个ListView的height也是match__parent,但仍然无效

自定义的适配器:

public class BookListAdapter extends BaseAdapter {
    private LayoutInflater mInflater;
    private List<Book> mData;


    public BookListAdapter(Context context,List<Book> bookList){
        this.mInflater = LayoutInflater.from(context);
        Log.i("ttg","开始执行适配器构造,当前booklist的数量为"+bookList.size());
        mData=bookList;
    }
    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        Log.i("ttg","开始执行getCount,当前mData的数量为"+mData.size());
        notifyDataSetChanged();
        return mData.size();
    }

    @Override
    public Object getItem(int arg0) {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public long getItemId(int arg0) {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        Log.i("ttg","调用getView");
        ViewHolder holder = null;

        if (convertView == null) {

            holder=new ViewHolder();

            convertView = mInflater.inflate(R.layout.booklist_item, null);
//            holder.img = (NetworkImageView)convertView.findViewById(R.id.img);
            holder.book_list_img = (ImageView) convertView.findViewById(R.id.book_list_img);
            holder.book_list_bookname = (TextView)convertView.findViewById(R.id.book_list_bookname);
            holder.book_list_author = (TextView)convertView.findViewById(R.id.book_list_author);
            holder.book_list_publisher = (TextView)convertView.findViewById(R.id.book_list_publisher);

            convertView.setTag(holder);

        }else {

            holder = (ViewHolder)convertView.getTag();
        }



        holder.book_list_bookname.setText((String)mData.get(position).getBookname());
        holder.book_list_publisher.setText((String)mData.get(position).getPublisher());
        holder.book_list_author.setText((String)mData.get(position).getAuthor());
        Log.i("ttg","数据设置完成");
//        holder.img.setImageUrl(mData.get(position).getPicture().getFileUrl(), imageLoader);
//         直接设置图片地址到NetworkImage,并将图片放入缓存
//        holder.img.setDefaultImageResId(R.mipmap.ic_launcher); // 当图片还没加载出来时显示的图片

        //BmobFile bmobFile=mData.get(position).getPicture();
        //Toast.makeText(getActivity(),bmobFile.getFileUrl(), Toast.LENGTH_SHORT).show();


        return convertView;
    }

    public final class ViewHolder{
        public ImageView book_list_img;
        public TextView book_list_bookname,book_list_author,book_list_publisher;


    }
        }

适配器会在数据查询之后与控件绑定:

BmobQuery<Book> query = new BmobQuery<>();
        query.order("-createdAt");// 按照时间降序
        Log.i("ttg", "开始查询数据");
        query.findObjects(new FindListener<Book>() {
            @Override
            public void done(List<Book> list, BmobException e) {
                Log.i("ttg", "查询完成,一共有" + list.size() + "条数据");
//                for (int i=0;i<list.size();++i){
//                    Log.i("ttg","第"+i+"条数据:"+list.get(i).getBookname());
//                }
                book_list_view.setAdapter(new BookListAdapter(getContext(),list));

3个回答

adapter中掉用notifyItemChanged,试一下.

把getCount() 中的notifyDataSetChanged();注释掉,或者检查单项子控件高度是否高于总高度

修改以下方法 试试

@Override
public Object getItem(int arg0) {
    // TODO Auto-generated method stub
    return mData.get(arg0);
}

@Override
public long getItemId(int arg0) {
    // TODO Auto-generated method stub
    return arg0;
}

@Override
public int getCount() {
    // TODO Auto-generated method stub
    Log.i("ttg","开始执行getCount,当前mData的数量为"+mData.size());
    //notifyDataSetChanged();这个注释掉
    return mData.size();
}
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问