Android listView 中嵌套不同的item

原创 2015年11月18日 16:18:12

在listview中嵌套不同的item,就要使用不同的ItmeHolder,根据要显示的不同来保存不同的itemholder (setTag)。

Listview中有3种Item布局,即使convertView缓存了一些布局,但是在重构时,根本不知道怎么样去让convertView返回你所需要的布局,这时你需要让adapter知道我当前有哪些布局,我重构Item时的布局选取规则,好让convertView能返回你需要的布局需要重写一下两个函数

@Override
public int getItemViewType(int position) {}
根据position来返回不同的int数据,从而加载不同的缓存布局

@Override
public int getViewTypeCount() {}
返回一共有多少种缓存布局的数量。

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    //三种itemHolder
    viewHolder1 holder1 = null;
    viewHolder2 holder2 = null;
    viewHolder3 holder3 = null;

//根据位置,判断是那种itemholder
    **int type = getItemViewType(position);**
    //无convertView,需要new出各个控件
    if(convertView == null)
    { 
        //按当前所需的样式,确定new的布局
        switch(type)
        {
        case TYPE_1:
            convertView = inflater.inflate(R.layout.listitem1, parent, false);
            holder1 = new viewHolder1();
            holder1.textView = (TextView)convertView.findViewById(R.id.textview1);
            holder1.checkBox = (CheckBox)convertView.findViewById(R.id.checkbox);
            Log.e("convertView = ", "NULL TYPE_1");
            convertView.setTag(holder1);
            break;
        case TYPE_2:
            convertView = inflater.inflate(R.layout.listitem2, parent, false);
            holder2 = new viewHolder2();
            holder2.textView = (TextView)convertView.findViewById(R.id.textview2);
            Log.e("convertView = ", "NULL TYPE_2");
            convertView.setTag(holder2);
            break;
        case TYPE_3:
            convertView = inflater.inflate(R.layout.listitem3, parent, false);
            holder3 = new viewHolder3();
            holder3.textView = (TextView)convertView.findViewById(R.id.textview3);
            holder3.imageView = (ImageView)convertView.findViewById(R.id.imageview);
            convertView.setTag(holder3);
            break;
        }
    }
    else
    {
    //有convertView,按样式,取得不用的布局
    switch(type)
    {
    case TYPE_1:
        holder1 = (viewHolder1) convertView.getTag();
        break;
    case TYPE_2:
        holder2 = (viewHolder2) convertView.getTag();
        break;
    case TYPE_3:
        holder3 = (viewHolder3) convertView.getTag();
        break;
    }
    }
    //根据不同的type,为各个界面设置资源
    switch(type)
    {
    case TYPE_1:
        holder1.textView.setText(Integer.toString(position));
        holder1.checkBox.setChecked(true);
        break;
    case TYPE_2:
        holder2.textView.setText(Integer.toString(position));
        break;
    case TYPE_3:
        holder3.textView.setText(Integer.toString(position));
        holder3.imageView.setBackgroundResource(R.drawable.icon);
        break;
    }
    return convertView;
}

解决ScrollView嵌套listview动态设置高度时,item高度不一样时,最后一个item显示不完全

在ScrollView嵌套listview动态设置高度时,item高度不一样时,最后一个item显示不完全。对于这个问题,有两种解决办法。 1:重新listview的onmeasure方法,这个是最...
  • niu101025
  • niu101025
  • 2016年10月21日 14:21
  • 2184

【Android 开发问题】ListView 嵌套 GridView导致ListView的item不可点击

问题描述:     ListView 嵌套 GridView ,会导致ListView的item中,GridView的那部分位置,点击对ListView的OnItemClickListener的行为...
  • JingleYe
  • JingleYe
  • 2016年12月05日 16:50
  • 1145

Viewpager中嵌套Listview,而且Listview的item中夹杂ViewPager

//现在有一个需求,需要在一个ViewPager的几个页面用listview显示,而且listview的item种类>=2,其中还有viewpager那么盖怎么实现呢,废话不多说,先把ViewPage...
  • u011282069
  • u011282069
  • 2015年01月20日 21:57
  • 6167

Android-ListView中嵌套(ListView)控件时item的点击事件不起作用的问题

解决:1、在主listview布局文件中的listview中添加属性 android:focusable="false"               2、在子listview中最顶上的布局文件添加属...
  • xiaoluoli88
  • xiaoluoli88
  • 2013年09月21日 13:14
  • 2218

Android listview设置多个不同的item样式

原文: http://blog.csdn.net/lllkey/article/details/9093107 实现代码 Adapter的代码 其中:ViewHolder分别是三个不同的布局...
  • dennycking
  • dennycking
  • 2016年03月11日 11:40
  • 1608

Android list每个item嵌套ViewPager

前段时间公司项目需要需要实现一个:列表中的每一个item嵌套横向滑动页的效果。刚拿到这个需求感觉实现起来应该比较简单,直接用ListView 嵌套 ViewPager就可以了,但在实现过程中确遇到很多...
  • haha223545
  • haha223545
  • 2017年04月11日 12:01
  • 661

在ListView中添加item为WebView

z
  • Alone_SLFly
  • Alone_SLFly
  • 2014年11月21日 10:23
  • 5293

ListView嵌套ListView,listVIew中含有各种不同布局的item

经常会在项目中遇到这样的布局,即一个列表中会有各种不同的布局,但是其中的部分布局又是一致,而且要一起滑动,这样的布局是很麻烦的! 这里说两种解决办法 一、这是最常见的一种,用scrollVie...
  • hq222
  • hq222
  • 2016年07月29日 09:40
  • 1272

listview嵌套listview,子listview只显示一个item问题

背景: 我在做项目的时候准备用listview嵌套一个listview,但是发现,子listview只显示一条数据,于是,一猜又是计算高度出问题了。 处理办法,当然是和scrollview嵌套lis...
  • SYIF88
  • SYIF88
  • 2016年04月24日 21:31
  • 2560

ListView中嵌套ScrollView,ScrollView拦截ListView的Item点击事件的解决办法

在listview中嵌套ScrollView,发现横滑竖滑都正常,但是无法单击Listview的Item。查询android分发机制后解决,继承Listview重写Listview的onInterce...
  • qq_29744607
  • qq_29744607
  • 2016年06月03日 08:01
  • 1273
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Android listView 中嵌套不同的item
举报原因:
原因补充:

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