getItemViewType为Listview,GridView,RecyclerView以及流布局的item设置不同的布局

getItemViewType为Listview,GridView,RecyclerView以及流布局的item设置不同的布局,第1张

为listview的item设置不同的布局文件,步骤如下

1、为不同的item写不同的布局文件,设置统一的bean类

2、继承BaseAdapter类,实现getItemViewType(int position)和getViewTypeCount() 方法,根据这两个方法,为item设置不同的标记,也就是不同的type

/**

* 根据数据源的position返回需要显示的的layout的type

*

* type的值必须从0开始

*/

@Override

public intgetItemViewType(intposition) {

returnposition ==0?0:1

}

3、在getView方法中,利用getItemViewType(position)方法获取当前的type类型,然后根据不同的type类型,加载不同的item布局文件。

intviewType = getItemViewType(position)

ViewTagHolder mViewTagHolder =null

if(convertView ==null) {

if(viewType ==0) {

convertView =mInflater.inflate(R.layout.layout_hot_search,parent, false)

}else{

convertView =mInflater.inflate(R.layout.adapter_tag_item,parent, false)

mViewTagHolder =newViewTagHolder(convertView)

convertView.setTag(R.string.app_name,mViewTagHolder)

}

}else{

mViewTagHolder = (ViewTagHolder) convertView.getTag(R.string.app_name)

}

4、其他的一些listview的优化同一般的listview没有很大区别。

给Listview里面Item里的每一个控件怎么设定点击事件

adpter用的是继承的baseadapter,给整个listview 上的 Item 设置点击事件就用listview.setOnItemClickListener(listener)就可以, 下面介绍 如果 给 I tem里面某一 控件设置点击事件。方法是重写 Adapter。

ListView工作原理(针对下面代码):

1. 给ListView设置数据适配器,此处程序是自己重写的Adapter,创建Adapter 的时候主要做下面的工作:

(1)把ListView需要显示的数据传给Adapter

(2)把ListView显示Item的界面传给Adapter

(3)把上下文对象传给Adapter,主要用来得到LayoutInflater对象来得到Item界面

2. 给ListView设置当点击Item对象的时候执行的 *** 作,此处要实现给Item中的各项也就是该程序的三个TextView设置监听器,也就是调用Adapter中的getView函数。

3. getView函数实现的 *** 作是:第一要将Item要显示的数据显示,然后设置监听器,为监听器设置 *** 作。

定义每一个item的layout的高度。

比如:

在/layout文件中定义row.xml

<?xml version="1.0" encoding="UTF-8"?>

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="horizontal"

android:layout_width="fill_parent" 

android:layout_height="10px"

<TextView

        android:layout_width="fill_parent"

android:layout_height="fill_parent" />

</RelativeLayout>

在adapter的getView里面用inflator加载这个layout,就可以达到改变item高度的目的。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11317938.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存