android编程练习中遇到的问题(三)-自定义适配器getView()不执行

原创 2016年06月01日 22:35:27

今天在做自定义适配器练习的时,发现ListView无论如何都不加载项布局文件,只有一片白板儿。反复检查代码没有发现问题,就在getView()方法中调用了Log.v调试信息,查看是否执行了此方法


public View getView(int i, View view, ViewGroup viewGroup) {
        Log.v("student", "succesful");
        View v = layoutInflater.inflate(resChildLayout, null);
        Student student = (Student) arrayList.get(i);
        Log.v("student", student.getName());
        ((ImageView) v.findViewById(R.id.item_img)).setImageResource(student.getPhoto());
        ((TextView) v.findViewById(R.id.item_name_txt)).setText(student.getName());
        ((TextView) v.findViewById(R.id.item_age_txt)).setText(student.getAge());
        ((TextView) v.findViewById(R.id.item_sex_txt)).setText(student.isSex() ? "男" : "女");
        return v;
    }

结果是运行时没有相关调试信息出现,也就代表没有执行此方法,于是我猜测是不是代码出了问题,便改为用系统的适配器ArrayAdap测试,

        ArrayList<Student> students = new ArrayList<Student>();
         String[] str = {"first", "second"};
//        Student student = new Student();
//        student.setPhoto(R.drawable.apple);
//        student.setName("张三");
//        student.setAge(22);
//        student.setSex(true);
//        students.add(student);
//
//        student = new Student();
//        student.setPhoto(R.drawable.peach);
//        student.setName("李四");
//        student.setAge(23);
//        student.setSex(true);
//        students.add(student);
         ArrayAdapter adapter = new ArrayAdapter(this, R.layout.activity_item_layout, str);
    //    MyAdapter myAdapter = new MyAdapter(this, students, R.layout.main_activity_item_layout);
        mActivityListview.setAdapter(adapter);


发现能加载项布局文件。

在这个时候发现AS提示"android 23 Platform" not found,我就想是不是这个问题,结果下载过后发现问题依然没有解决。最后通过搜索找到了问题所在。


如果自定义适配器中的getCount()返回值为0,是不会执行getView方法。


@Override
    public int getCount() {
        return 0;
    }//getCount()方法返回值为0,自定义适配器类运行时不会执行

将getCount()返回值修改后

@Override
    public int getCount() {
        return arrayList.size();
    }//getCount()方法返回值为0,自定义适配器类运行时不会执行

成功加载项布局文件.

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

关于listview的自定义adapter不执行getview()方法的几种情况和解决办法

listview是一个比较常用的控件,为了适应自己需要的效果往往会继承baseadapter去实现自定义的适配器。        在该适配器中出错最多的应该是getview()了。        ...

android getView方法不执行的一个原因是布局文件中没有给列表显示的位置

一个原因是布局文件中,没有给列表显示的位置。 例如:下面的布局         android:id="@+id/list_find"         android:layout_widt...
  • wletv
  • wletv
  • 2015年02月26日 10:45
  • 6421

ListView无法执行getView()的几种可能问题

在遇到这个问题过后,在网上翻阅了一些资料,找到了一些思路,一下问题的解释来自一位大神,觉得非常有用,就收藏记录下来。  listview是一个比较常用的控件,为了适应自己需要的效果往往会继承b...
  • zqsong5
  • zqsong5
  • 2017年04月11日 17:25
  • 193

关于ListView 中getCount有值getView不调用的问题

listview中getCount执行而getView不执行的几种原因
  • chniccs
  • chniccs
  • 2015年11月12日 11:54
  • 1871

MAC上的抓包工具charles的安装与使用

Charles是mac端的一款截取与分析网络请求的工具,在网络开发中使用其作分析,可以大大提高我们的开发效率。比如可以查看网络请求、模拟网络延迟等等。 下载 当前的破解版是3.10...

Mac上的抓包工具Charles

今天就来看一下Mac上如何进行抓包,之前有一篇文章介绍了使用Fidder进行抓包http://blog.csdn.net/jiangwei0910410003/article/details/1980...

android自定义接口,然后在activity中实现点击监听,调用getView解决滑动错位的问题

android自定义接口,然后在activity中实现点击监听刷新,调用getView利用ArrayMap记录状态,解决滑动错位的问题...

android自定义Adapter中getView()三种写法及其效率问题。

android中常常需要我们自定义Adapter,甚至经常建一个包专门放各种自定义adapter类。常见的有ListView继承自BaseAdapter的adapter、ExpandableListV...

Android listview&gridview getview 方法多次调用问题解决方法 并附上单页加载实现问卷调查适配器源代码

一 、 关于listview 的问题     (1)情况一:      今天在改毕设代码的时候,突然发现一个奇怪的现象,就是在在定义的listview中有一个imageview和一个textvie...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android编程练习中遇到的问题(三)-自定义适配器getView()不执行
举报原因:
原因补充:

(最多只允许输入30个字)