ListView实现不同布局的显示

ListView进行不同布局的显示,就需要重写5种方法,本文以两种布局为例

利用假数据进行模拟:

添加适配器

class MyBaseAdapter extends BaseAdapter{

@Override    public int getCount() {        return mData.size()+mReshdata.size();    }

@Override    public Object getItem(int i) {

return null;

}

@Override    public long getItemId(int i) {        return 0;    }

/**     *     * @return返回两种类型布局     */    @Override    public int getViewTypeCount() {        return 2;    }

/**     * 不同布局绘制状况   //  * @param position     * @return     */    @Override    public int getItemViewType(int position) {        Log.d("TAG","POSITO="+position+","+"getcount="+mData.size());

if (position<mData.size()){            return first;        }else {            return second;        }

}

@Override    public View getView(int i, View view, ViewGroup viewGroup) {        Log.d("TAG","I="+i);        int itemViewType = getItemViewType(i);        Log.d("TAG","itemViewType="+itemViewType);        ViewHolder holder = null;        ViewHolderTwo holder_se = null;        if (view == null){            switch (itemViewType){                case first:                    holder = new ViewHolder();                    view = View.inflate(getApplicationContext(), R.layout.item_lv, null);                    holder.tv_data = (TextView) view.findViewById(R.id.tv_sj);                    view.setTag(holder);                    break;                case second:                    holder_se = new ViewHolderTwo();                    view = View.inflate(getApplicationContext(), R.layout.item_second, null);                    holder_se.tv_second = (TextView) view.findViewById(R.id.tv_second);                    view.setTag(holder_se);                    break;                default:                    break;            }        }else {            switch (itemViewType){                case first:                    holder = (ViewHolder) view.getTag();                    break;                case second:                    holder_se = (ViewHolderTwo) view.getTag();                    break;                default:                    break;            }        }        switch (itemViewType){            case first:                String s = mData.get(mData.size()-1);//mData.get(i)                holder.tv_data.setText(s);                break;            case second:

Log.d("TAG","i-mData.size()="+ (i-mData.size()));

String second = mReshdata.get(i-mData.size());                holder_se.tv_second.setText(second);                break;            default:                break;        }        return view;    }}class ViewHolder{    TextView tv_data;

}class  ViewHolderTwo{    TextView tv_second;}进行不同布局的加载就实现了:
布局用的就是简单的TextView就不列出了。

同理实现多种类型,按照这样的逻辑都可以实现。

				
时间: 2024-12-14 18:17:36

ListView实现不同布局的显示的相关文章

ListView添加头布局和脚布局

 ListView添加头布局和脚布局 之前学习喜马拉雅的时候做的一个小Demo,贴出来,供大家学习参考: 如果我们当前的页面有多个接口.多种布局的话,我们一般的选择无非就是1.多布局:2.各种复杂滑动布局外面套一层ScrollView(好low):3.头布局脚布局.有的时候我们用多布局并不能很好的实现,所以头布局跟脚布局就是我们最好的选择了:学过了ListView的话原理很简单,没啥理解的东西,直接贴代码了: 效果图:                   正文部分布局: fragment_cla

android(9) ListView + ScrollView + ViewPager布局

一.ListView + ScrollView + ViewPager界面实现: 看了别人的源码总要总结一下,ListView与ScrollView两者之间是有冲突的,但有的时候,又不得不两者一块使用.主要就是ListView中item高度不确定,只要写死或先算出所有的item的高度和就能显示出你所需要的效果了. 效果图: 主界面: public class MainActivity extends Activity { // viewPager private MyPageAdapter vi

当listview数据为空时 显示其他的view

看代码学知识之(2) ListView无数据时显示其他View 今天看的一块布局是这样的: <!-- The frame layout is here since we will be showing either the empty view or the list view. --> <FrameLayout android:layout_width="match_parent" android:layout_height="0dip" and

[Android Pro] android控件ListView顶部或者底部也显示分割线

reference to  :  http://blog.csdn.net/lovexieyuan520/article/details/50846569 在默认的Android控件ListView在顶部是不显示分割线的,但是我们可以使用一些技巧来显示.我们先来看下默认情况下ListView显示的效果: 可以看到顶部是没有分割线的,但是有时候我们的美工硬是在上面画了一条分割线,没办法,我们也得加上,我们在ListView顶部加上一个Header就可以实现,代码如下 listView.addHea

ListView的多布局中的小问题

今天用到了ListView的多布局,我们需要额外重写两个方法 //返回多布局的个数 @Override public int getViewTypeCount() { return 3; } //用该方法去判断应该加载那个布局 @Override public int getItemViewType(int position) { Gson gson = new Gson(); String imageUrl = myNewsData.get(position).getImageurls();

Android ListView滑动过程中图片显示重复错乱闪烁问题解决

转自:http://www.oschina.net/question/221817_121051 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制.1.原因分析ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则p

【转】 C# ListView实例:文件图标显示

[转] C# ListView实例:文件图标显示 说明:本例将目录中的文件显示在窗体的ListView控件中,并定义了多种视图浏览.通过调用Win32库函数实现图标数据的提取. 主程序: 大图标: 列表: 详细信息: Form1.cs: public partial class Form1 : Form { FileInfoList fileList; public Form1() { InitializeComponent(); } private void 加载文件ToolStripMenu

Android基础入门教程——2.4.8 ListView Item多布局的实现

Android基础入门教程--2.4.8 ListView Item多布局的实现 标签(空格分隔): Android基础入门教程 本节引言: 本节是ListView这个小节的最后一节,给大家带来的是ListView多布局Item的实现, 何为ListView Item多布局,打个比方,QQ这种聊天列表: 假如他是用一个ListView做的,那么一个ListView上不就有两种不同的Item咯! 一左一右,嘿嘿,本节就来教大家如何实现ListView的多布局! 1.要点讲解: 重写getItemV

Android ListView滑动过程中图片显示重复错位闪烁问题解决[转载]

转自:here 主要分析Android ListView滚动过程中图片显示重复.错乱.闪烁的原因及解决方法,顺带提及ListView的缓存机制.1.原因分析ListView item缓存机制:为了使得性能更优,ListView会缓存行item(某行对应的View).ListView通过adapter的getView函数获得每行的item.滑动过程中, a. 如果某行item已经滑出屏幕,若该item不在缓存内,则put进缓存,否则更新缓存:b. 获取滑入屏幕的行item之前会先判断缓存中是否有可