android ListView分类显示

  次阅读 作者:智能小宝 来源:互联网 2015-11-26 10:17 我要评论(0)

今天和大家分享关于 listview的分类显示 。现在有比较多的应用都有这个效果,比如在android的ICS风格的 设置 选项里面就有这个效果,先看看效果:

实现这个效果比较简单,在填充listview的adapter的时候,我们都会通过继承BaseAdapter来写我们自己的adapter,listview里面的item是通过getView(int position, View convertView, ViewGroup parent) 实现。其实这边有实现预加载,你只要在getview方法里面打印出log信息就会发现,listview刚开始显示的时候getview不会返回所有的item,只是返回了前面几个,当你往下拖拽的时候getview方法会加载剩下的item。这样做的好处大家都知道,如果不这样做估计早就出现了内存泄漏了。

好吧,我们回到主题,实现分类显示只需要你把你显示的数据打包好。Listview里面的item都是通过getView来生成,所以可以这样,如果在getview里面生成item的时候,你返回两次convertView不就可以了吗?也就是说平时我们都是通过convertView来返回item,但是现在多了一个操作就是你根据自身打包的数据,如果当前返回的item是和之前显示的item不属于同一类就返回两次convertView。这样理解这个就好实现多了吧。注意的是像上面图上 Label 、 类别1 、 类别2 是不可点击的,只要实现BaseAdapter里面的isEnabled(int position)的方法就可以。

下面介绍的实现方式是运用了工厂模式实现,下面是草图

新建了一个ListItems接口:

/***

* @authorhuangsm

* @date 2012-8-29

* @emailhuangsanm@gmail.com

* @desc 接口

*/

public interface ListItems {

public int getLayout();

public boolean isClickable();

public View getView(Context context, View convertView, LayoutInflater inflater);

}

其中LabelItem和ContentItem分别是显示的 类别 和 内容 ,他们分别实现ListItems接口。LabelItem实现:

/***

* @authorhuangsm

* @date 2012-8-29

* @emailhuangsanm@gmail.com

* @desc 标签

*/

public class LabelItem implements ListItems {

private String mLabel;

public LabelItem(String label){

mLabel = label;

}

@Override

public int getLayout() {

return R.layout.label_layout;

}

@Override

public boolean isClickable() {

return false;

}

@Override

public View getView(Context context, View convertView, LayoutInflater inflater) {

convertView = inflater.inflate(getLayout(), null);

TextView title = (TextView) convertView;

title.setText(mLabel);

return convertView;

}

}

ContentItem的实现:

/***

* @authorhuangsm

* @date 2012-8-29

本站文章信息来源于网络以及网友投稿,本站只负责对文章进行整理、排版、编辑,是出于传递更多信息之目的,并不意味着赞同其观点或证实其内容的真实性。如果您有什么意见或建议,请联系QQ28-1688-302!

人工智能实验室
相关文章相关文章
  • 未来两年人工智能要怎么走?看这篇就够了

    未来两年人工智能要怎么走?看这篇就够了

  • 无人驾驶汽车如何改变城市生活?听听他们怎么说

    无人驾驶汽车如何改变城市生活?听听他们怎么说

  • 英国研发“杀生”机器人 通过生命体获取能量

    英国研发“杀生”机器人 通过生命体获取能量

  • 韩春雨称已能重复实验结果 近期将有消息公布

    韩春雨称已能重复实验结果 近期将有消息公布

网友点评网友点评
阅读推荐阅读推荐

据国外媒体报道,在过去两年内,聊天机器人(chatbot)、人工智能以及机器学习的研发和采用取得了巨大进展。许多初创公司正利用人工智能和...

霍金 视觉中国 图 英国著名物理学家霍金(Stephen Hawking)再次就人工智能(AI)发声,他认为:对于人类来说,强大AI的出现可能是最美妙的...

文|郑娟娟 今年,人工智能(AI) 60岁了。在AI60岁的时候,笔者想要介绍一下AI100,一个刚刚2岁的研究项目,但它的预设寿命是100年,甚至更长...

AlphaGo与李世石的人机大战,为大众迅速普及了人工智能的概念。 但对谷歌而言,除了下围棋,现在的人工智能进展到哪一步了?未来,人工智能...