ListView展示不同布局需要注意的地方
尊重劳动成果,转载请标明出处:http://www.cnblogs.com/tangZH/p/8419010.html
我们在项目中经常需在一个listview中展示不一样的布局,我们可以在adapter的getView()中根据position来决定该展示哪些布局。
我在项目中便是如此,第一个item是展示一张图片(判断当position==0的时候返回该图片),而当position不为0的时候返回我们需要的布局,如下:
ViewHolder viewHolder = new ViewHolder();
if (view == null) {
view = mInflater.inflate(R.layout.listview_item, viewGroup, false);
viewHolder.textCate = view.findViewById(R.id.discover_text_category);
viewHolder.textView = view.findViewById(R.id.discover_view_all);
viewHolder.arrow = view.findViewById(R.id.discover_arrow);
viewHolder.divider = view.findViewById(R.id.discover_item_divider);
view.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) view.getTag();
} //下面这里执行相应的操作,举一个例子
viewHolder.textCate.setText("A")
可是这时候问题来了,滑动到下面的时候报错:找不到组件textCate
苦思良久,最终我是这样分析的:
listView的item会复用,也就是滑动到下面的时候,下面的item会复用第一个item,也就是图片,然后代码在判断view == null的时候不成立,于是执行
viewHolder = (ViewHolder) view.getTag();
而我们没有给图片设置tag,取出来的当然为空,因此下面会报空指针。
有什么觉方法呢?
其实很简单,只要在判断view == null后面再加上一个判断就行了:
if (view == null || view.getTag() == null)
当view为null或者view取出来的tag也为null的时候,那就需要去重新加载布局,设置tag
ListView展示不同布局需要注意的地方的更多相关文章
- Xamarin.Android 调用Web Api(通过ListView展示远程获取的数据)
xamarin.android如何调用sqlserver 数据库呢(或者其他的),很多新手都会有这个疑问.xamarin.android调用远程数据主要有两种方式: 在Android中保存数据或调用数 ...
- android 项目学习随笔十二(ListView加脚布局)
1.ListView加脚布局 头布局initHeaderView,在onTouchEvent事件中进行显示隐藏头布局切换 脚布局initFooterView,实现接口OnScrollListener, ...
- ListView中嵌入布局的Button或多个点击事件
有时候在ListView嵌入的布局中有多个事件需要点击,比如一个item中有TextView和Button两个布局,当我们需要获取这两个点击事件时,我们应该如何去获取呢,通常来说,我们都是已经固定好了 ...
- android listview展示图片
最近学习android开发,感触颇多,和网站开发对比,还是有很大的差距,在这里记录一下. android listview展示图片 在网站开发上,展示图片非常简单,一个HTML img标签就搞定,加上 ...
- 仿喜马拉雅实现ListView添加头布局和脚布局
ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动 ...
- android 项目学习随笔九(ListView加头布局)
1.缓冲背景色 <ListView android:id="@+id/lv_list" android:layout_width="match_parent&quo ...
- ListView的多布局中的小问题
今天用到了ListView的多布局,我们需要额外重写两个方法 //返回多布局的个数 @Override public int getViewTypeCount() { return 3; } //用该 ...
- 解决viewpager+多个fragment+listview,listview展示内容高度不自适应出现多余空白问题
一.重写viewpager import android.content.Context; import android.support.v4.view.ViewPager; import andro ...
- Android学习总结(十四) ———— ListView Item多布局的实现
一.基本概念 实现一个Item的多布局.像我们经常在用的各种即时通讯工具,QQ.微信等,假设他们的会话界面是ListView实现的,那么ListView就有多种Item布局,要实现ListView里面 ...
随机推荐
- vue1.0与vue2.0对于v-for的使用的区别
vue1.0与vue2.0对于v-for的使用的区别: 1,vue1.0中有$index,而vue2.0将$index移除. 2,vue1.0中(index,item) in list 而vue2.变 ...
- [Swift]LeetCode332. 重新安排行程 | Reconstruct Itinerary
Given a list of airline tickets represented by pairs of departure and arrival airports [from, to], r ...
- [Swift]LeetCode371. 两整数之和 | Sum of Two Integers
Calculate the sum of two integers a and b, but you are not allowed to use the operator + and -. Exam ...
- [Swift]LeetCode1028. 从先序遍历还原二叉树 | Recover a Tree From Preorder Traversal
We run a preorder depth first search on the root of a binary tree. At each node in this traversal, w ...
- NDK开发入门终极教程
0 前言 同NDK技术的渊源始于3年前,使用so文件的时候了解到NDK技术,并且C语言一直是强项,就鼓捣起NDK开发.在AndroidStduio还没推广的年代,基于eclipse搭建NDK开发环境需 ...
- JVM基础系列第8讲:JVM 垃圾回收机制
在第 6 讲中我们说到 Java 虚拟机的内存结构,提到了这部分的规范其实是由<Java 虚拟机规范>指定的,每个 Java 虚拟机可能都有不同的实现.其实涉及到 Java 虚拟机的内存, ...
- 【netty】(2)---搭建一个简单服务器
netty(2)---搭建一个简单服务器 说明:本篇博客是基于学习慕课网有关视频教学.效果:当用户访问:localhost:8088 后 服务器返回 "hello netty"; ...
- Python爬虫入门教程 16-100 500px摄影师社区抓取摄影师数据
写在前面 今天要抓取的网站为 https://500px.me/ ,这是一个摄影社区,在一个摄影社区里面本来应该爬取的是图片信息,可是我发现好像也没啥有意思的,忽然觉得爬取一下这个网站的摄影师更好玩一 ...
- Android:谈一谈安卓应用中的Toast情节(基础)
前言 Toast,这个曾经也是现在正在迷倒万千软件开发者尤其是android开发者的小美女,向来不乏在各个明星应用中频繁登场.Toast是神马~听说是一种吐司面包,能吃吗?如果手机屏幕是巧克力做的,我 ...
- Chapter 5 Blood Type——19
"Are you feeling faint?" “你感觉头晕吗?” "Yes, sir," I muttered, internally kicking my ...