2 leilba leilba 于 2016.01.21 15:22 提问

Android ListView的adapter中如何重用不同类型的item

如题,我要做的效果是一个listView中能显示不同类型的item,而且我希望同一类的item能够在滑动时候进行重用。
比如说,我一个listView中,会显示纯文字的item、纯图片的item、纯视屏的item,我在滑动的时候会根据我的数据类型进行选择加载,我希望我除了开始的时候为它们创建view以外,之后滑动下去以后都是重用之前的item,纯文字的item重用之前显示过的纯文字的item、纯图片的item重用之前显示过的纯图片的item、纯视屏的item重用之前显示过的纯视屏的item

7个回答

duo2005duo
duo2005duo   2016.01.21 20:11
已采纳

你的例子里面纯文字的item、纯图片的item、纯视屏的item共3种type
1.继承BaseAdapter
2.覆盖如下方法
1)getViewTypeCount() 你的例子是返回3
2 ) getItemViewType() 为你的每种item顶一个编号,形成position到type的映射
3.接下来你就可以在getView中重用对象,之前已经有position到type的映射了,你可以得到convertview当前的type类型了
4.不谢

leilba
leilba 还是要谢谢你
2 年多之前 回复
qq_15771061
qq_15771061   2016.01.22 14:42

getItemViewType(),getViewTypeCount()
http://blog.csdn.net/qq_15771061/article/details/50278407

danielinbiti
danielinbiti   Ds   Rxr 2016.01.21 15:33

只能屏幕可见的缓冲区重用。
不同布局自己继承baseadapter,然后重写getItemViewType

Mr_dsw
Mr_dsw   Ds   Rxr 2016.01.21 15:33

你可以学习下一些listview的一些使用

qq_24829651
qq_24829651   2016.01.21 16:21

使用Google推荐使用替代ListView的RecyclerView他会自动帮你回收不用的item并重用

lxk_1993
lxk_1993   Rxr 2016.01.21 16:39

可以让后台返回一个item的标识 在adapter 的 getview 根据标识进行选择

qq_27578023
qq_27578023   2016.06.10 22:12

你的例子里面纯文字的item、纯图片的item、纯视屏的item共3种type
1.继承BaseAdapter
2.覆盖如下方法
1)getViewTypeCount() 你的例子是返回3
2 ) getItemViewType() 为你的每种item顶一个编号,形成position到type的映射
3.接下来你就可以在getView中重用对象,之前已经有position到type的映射了,你可以得到convertview当前的type类型了

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
listview如何包含不同类型的Item
 listview可以说是在我们安卓的日常开发中用到最多的控件,它主要用于一些列表的显示。ListView不与数据直接打交道,它需要适配器Adapter作为中间的桥梁。今天我要写的listview如何包含不同类型的Item,实际也是在Adapter里面做相应的处理。适配器我们常用的ArrayAdapter,SimpleAdapter和BaseAdapter,而前面两个实际是继承自BaseAd
Android listView同时展示多种不同数据的item
引言———–最近由于项目需求,需要把两种数据揉在一起然后通过两种数据共有的时间来排序,装在listView里面。以前我们看到的多数都是listView里面装一种item所持的数据,或者更甚一点就是加了分割线什么的。现在我们一起来学习一下怎么把多种数据用不同的item排序后装在同一个listView里面。
Android ListView实现不同类型的item
小编也是初来乍到,对于Android也是摸着石头过河。今天算是摸索着把listView不同类型的item给实现了,网上找了那么多每一个是完整版的,伤透脑筋,废话不多,上代码(有过错还请指正): 先看主布局文件<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.c
Android--listview多种类型item
1、原理分析                  Adapter对于ListView是非常重要的,它处于listView和数据源的中间,负责为ListView创建具体的视图。之前提到过ListView采用了View复用技术,即使需要显示大量的数据列表时它也能高效的工作,它总是试图复用已经存在的View。                  下面就对View复用技术,做简单的讲解:    
Android listview中,不同的Item显示不同的layout ---- BaseAdapter
Android  listview中,不同的Item显示不同的layout  ---- BaseAdapter 工作中有时会有这样的需求,listview的Item显示中,奇数行显示一种效果,偶数行显示另外一种效果。或者第一行显示的内容或效果与其他行不同。 解决方法是复写BaseAdapter中的 getItemViewType和getViewTypeCount这两个方法: 参考代码如下:
BaseAdapter-ListView中的item显示多种布局
想要在listview中的item添加多中布局主要是加多两个方法: public int getItemViewType(int position){ return position; } public int getViewTypeCount(int position){ return position; } 演示图片: 不要吐槽效果只是演示一下如何实现的,嗯!
Android之ListView的Adapter的复用
Android之ListView的Adapter的复用
ListView复用和优化之多布局详解
前言在上一篇文章中,我已经非常详细的阐述了ListView的复用原理和几个大家不太明白的地方.也同时重现了复用的问题并告诉大家如何去解决.如果你没有看上一篇,请先移步,这篇基于上一篇的知识继续讲解ListView中多布局是个什么原理ListView复用和优化详解需求:实现联系人列表的展现形式先随便放一个联系人列表的效果图,博主随便找了一张图给大家看看效果先我们可以看到,这里肯定是一个列表来实现的,如
自定义Adapter实现多视图Item的ListView
From http://www.devdiv.com/adapter_item_listview-article-3730-1.html 1、原理分析                  Adapter对于ListView是非常重要的,它处于listView和数据源的中间,负责为ListView创建具体的视图。之前提到过ListView采用了View复用技术,即使需要显示大量的数据列表时它也能
ListView不同布局的item的复用方法详解
废话不多说,直接上代码简介。 一、MainActivity和布局 public class HomeActivity extends Activity { @Bind(R.id.lv) ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(saved