listview布局(android中listView怎么复用多种布局)

2024-07-03 06:10:26 2

listview布局(android中listView怎么复用多种布局)

“listview布局”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看listview布局(android中listView怎么复用多种布局)!

本文目录

android中listView怎么复用多种布局

adapter填充数据的时候,我们一般要实现以下方法:1 public int getCount(){ }2 public Object getItem(int position) {}3 public long getItemId(int position) {}4 public View getView(int position, View view, ViewGroup viewGroup){} 但是要实现复用多种布局的话我们还要实现下面2个方法 1 public int getItemViewType(int position) {} 返回我们要复用的布局类型,假如我们要复用一个tab结构和item结构,我们可以这么来写 类别的数值在(0,类别总数-1)之间public static final int TYPE_UNKNOW = 0; public static final int TYPE_TAB = 1; public static final int TYPE_LIST_ITEM = 2; public static final int TYPE_MAX_COUNT = 3;@Override public int getItemViewType(int position) { //复用tab结构 if (position == 1) { return TYPE_TAB; } //复用一般的item结构 int size = CollectionUtils.size(feedDataList); if (position 》= 1 && size 》 0 && position 《 (size + 2)) { return TYPE_LIST_ITEM; } return TYPE_UNKNOW; }类别总数是3,类别对应的int值应该在0 - 2 之间,它们分别是 public static final int TYPE_UNKNOW = 0; public static final int TYPE_TAB = 1; public static final int TYPE_LIST_ITEM = 2;2 public int getViewTypeCount() { } 返回复用布局的总数,这里是3@Override public int getViewTypeCount() { return TYPE_MAX_COUNT; }在adapter中的getView方法中,我们就可以这样来写: @Override public View getView(int position, View convertView, ViewGroup viewGroup) { ItemViewHolder itemViewHolder; TabViewHolder tabViewHolder; int viewType= getItemViewType(position); switch (viewType) { case TYPE_TAB: if(convertView == null ) { tabViewHolder = new TabViewHolder(mContext); //给contenView赋值,并给viewHolder设置tag tabViewHolder.findView(position,convertView,viewGroup); }else{ //直接复用 tabViewHolder = (TabViewHolder)convertView.getTag(); } //这里是处理业务逻辑的方法 tabViewHolder.setView(position); return tabViewHolder.layout;//返回convertView case TYPE_LIST_ITEM: if (convertView == null) { itemViewHolder = new ItemViewHolder(mContext); //给contenView赋值,并给viewHolder设置tag itemViewHolder.findView(position, convertView, viewGroup); } else { //convertView不为空,直接复用 itemViewHolder = (ItemViewHolder) convertView.getTag(); } //处理业务逻辑 itemViewHolder.setView((FeedComment)getItem(position)); return itemViewHolder.layout;//返回convertView case TYPE_UNKNOW: return null; } return null; } 说明:处理复用多个布局的时候,如果不调用上面getViewTypeCount()和getItemType(),很容易就出现viewHolder类型转换错误。因为在屏幕滚动的时候,view.getTag()返回的viewHolder有2种,我们拿到的viewHolder可能就不是理想中的viewHolder,这个时候类型转换错误就出现了。

如何实现listview中item的自定义布局

Listview使用自定义布局,则需要创建layout,并引用layout。以下为示例代码:创建layout文件《?xml version="1.0" encoding="utf-8"?》《LinearLayout xmlns:android=android:layout_width="fill_parent"android:layout_height="wrap_content"》《TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/online_user_list_item_textview" android:text="TextView"》《/TextView》《Buttonandroid:text="button"android:layout_width="wrap_content"android:layout_height="wrap_content"》《/Button》《/LinearLayout》2.layout面含有的textview是想要展示内容的地方。那么构建ArrayAdapter时,应该这样写:ArrayAdapter《String》 adapter = new ArrayAdapter《String》(this, R.layout.online_user_list_item, R.id.online_user_list_item_textview); 3.ArrayAdapter并且重写getView方法。代码:public class UserListAdapter extends ArrayAdapter《User》 {private int resourceId;public UserListAdapter(Context context, int textViewResourceId,List《User》 objects) {super(context, textViewResourceId, objects);this.resourceId = textViewResourceId;}@Overridepublic View getView(int position, View convertView, ViewGroup parent){User user = getItem(position);LinearLayout userListItem = new LinearLayout(getContext());String inflater = Context.LAYOUT_INFLATER_SERVICE; LayoutInflater vi = (LayoutInflater)getContext().getSystemService(inflater); vi.inflate(resourceId, userListItem, true);TextView tvUsername = (TextView)userListItem.findViewById(R.id.tv_user_list_username);TextView tvAskedNum = (TextView)userListItem.findViewById(R.id.tv_user_list_askednum);TextView tvLastMsg = (TextView)userListItem.findViewById(R.id.tv_user_list_lastmsg);tvUsername.setText(user.getUsername());tvAskedNum.setText(String.valueOf(user.getAskedNum()));tvLastMsg.setText(user.getLastMsg());return userListItem;}}

listview的item条目布局文件一般放在哪个文件夹里

res文件夹。1、ListView的使用中,item是在adapter中用来显示每一个条目,一般放在res文件夹。2、题目出自《移动端应用方案设计》。

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

为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没有很大区别。

android中怎么用代码实现ListView 布局和 GridView 布局 就是完全不用xml写

ListView lv = new ListView(getApplicationContext()); lv.setLayoutParams(new LayoutParams(width, height));创建一个ListView,然后设置布局。其他属性也一样可以设置。

android如何在listview里给每个条目设置布局

可以为listview设置自定义的Adapter,该自定义Adapter继承BaseAdapter

class MyAdapter extends BaseAdapter {        @Override        public int getCount() {            // TODO Auto-generated method stub            return list!=null?list.size():0;        }        @Override        public Object getItem(int position) {            // TODO Auto-generated method stub            return list.get(position);        }        @Override        public long getItemId(int position) {            // TODO Auto-generated method stub            return position;        }        @Override        public View getView(int position, View convertView, ViewGroup parent) {            // TODO Auto-generated method stub            View v = getLayoutInflater().inflate(R.layout.data_list, null);                        TextView name = (TextView) v.findViewById(R.id.name);            name.setText((String) list.get(position).get("name"));                        return v;            }}其中getView方法可以通过getLayoutInflater().inflate()方法为每个条目设置不同的布局。

如何在ListView中嵌套ListView

1、简单布局:ListView整页面ListView由于ListView本身带滚效所加载数据超页面显示范围通滑查看所item种情况需要添加ScrollView2、其布局A+ListView种情况布局A定义ListView前面布局A所占比例较或者ListView加载数据较都导致ListView显示完全同由于ListView自身滚仍通滚查看ListView所item图所示:3、其布局B+ListView种情况假设布局B定义ListView面现两种情况:(1)、ListView加载数据完全显示ListView每项面足够剩余空间布局B能显示;(2)、ListView加载数据加导致留给布局B空间足或者根本没布局B显示完全或者完全显示管ListView本身内容都通滑查看于第三种情况重新考虑布局需要添加ScrollView用于查看剩余页面内容二、ScrollViewListView冲突问题1、给ListView指定高度例设置android:layout_height="240dip"解决能影响美观图所示:2、外面再添加ScrollView种情况现问题图所示:3、给ScrollView设置属性:android:fillViewport="true"测试候发现ListView加载数据确实解决ListView加载数据较候仍旧显示完全并且候ListView自身滚三、解决办两种1、计算listview总高度并设置ListView listView = (ListView) findViewById(id);YourAdapter adapter = new MyAdapter("初始化适配器");listView.setAdapter(adapter);setListViewHeightBasedOnChildren(listView);(setAdapter调用自定义)复制代码 代码:/*** @param listView*/private void setListViewHeightBasedOnChildren(ListView listView) {ListAdapter listAdapter = listView.getAdapter();if (listAdapter == null) {return;}int totalHeight = 0;for (int i = 0; i 《 listAdapter.getCount(); i++) {View listItem = listAdapter.getView(i, null, listView);listItem.measure(0, 0);totalHeight += listItem.getMeasuredHeight();}ViewGroup.LayoutParams params = listView.getLayoutParams();params.height = totalHeight+ (listView.getDividerHeight() * (listAdapter.getCount() - 1));listView.setLayoutParams(params);}使用该需要注意:ListView每Item必须LinearLayout能其其Layout(RelativeLayout)没重写onMeasure()所onMeasure()抛异2、 自定义ListView重载onMeasure()设置全部显示复制代码 代码:package com.meiya.ui;import android.widget.ListView;/*** * @Description: scrollview内嵌listview简单实现* * @File: ScrollViewWithListView.java* * @Paceage com.meiya.ui* * * @Date 午03:02:38* * @Version*/public class ScrollViewWithListView extends ListView {public ScrollViewWithListView(android.content.Context context,android.util.AttributeSet attrs) {super(context, attrs);}/*** Integer.MAX_VALUE 》》 2,设置系统默认设置显示两条*/public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE 》》 2,MeasureSpec.AT_MOST);super.onMeasure(widthMeasureSpec, expandSpec);}}解决scrollView内嵌listView问题第进入界面态加载listviewitems页面跳转listview第项蛋疼奈知道解决先用复制代码 代码:scrollView.post(new Runnable() { //让scrollview跳转顶部必须放runnable() @Override public void run() { scrollView.scrollTo(0, 0); } });度希望知道朋友给点解决案3、使用scrollView +LinearLayout用addView()添加列表

关于listview布局到此分享完毕,希望能帮助到您。

listview布局(android中listView怎么复用多种布局)

本文编辑:admin

更多文章:


直播app怎么下载?直播的软件怎么下载

直播app怎么下载?直播的软件怎么下载

“直播下载”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看直播app怎么下载?直播的软件怎么下载!本文目录直播app怎么下载直播的软件怎么下载抖直播哪里下载火星直播怎么下载水间直播怎么下载小度怎么下载虎牙直播手机看电视直播下

2024年6月12日 08:21

免费自动连接wifi(怎样设置电脑开机后自动开启360免费wifi)

免费自动连接wifi(怎样设置电脑开机后自动开启360免费wifi)

大家好,今天小编来为大家解答以下的问题,关于免费自动连接wifi,怎样设置电脑开机后自动开启360免费wifi这个很多人还不知道,现在让我们一起来看看吧!本文目录怎样设置电脑开机后自动开启360免费wifi自动连接wifi,不用密码,走到哪

2024年7月1日 23:35

百度文库免费下载方法(如何免费下载百度文库的文档)

百度文库免费下载方法(如何免费下载百度文库的文档)

各位老铁们,大家好,今天由我来为大家分享百度文库免费下载方法,以及如何免费下载百度文库的文档的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录如何免费

2024年7月20日 21:45

18款禁用软件黄a免费(18款禁用使用的100种软件)

18款禁用软件黄a免费(18款禁用使用的100种软件)

本篇文章给大家谈谈18款禁用软件黄a免费,以及18款禁用使用的100种软件对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。本文目录18款禁用使用的100种软件18款禁用软件雏鸟短视频18款夜里必备的禁用十八款禁用的软件十八款夜间禁用软

2024年5月20日 04:52

天庭战神怎么打攻略?天庭最厉害的战神是谁,不是杨戬,不是哪吒,他是谁

天庭战神怎么打攻略?天庭最厉害的战神是谁,不是杨戬,不是哪吒,他是谁

本文目录天庭战神怎么打攻略天庭最厉害的战神是谁,不是杨戬,不是哪吒,他是谁能打败孙悟空的“天庭战神”杨戬究竟是什么来历为什么造梦西游3改天庭战神时装时,改代码总是显示无效的指令呢天庭战神怎么打攻略打天庭战神全面攻略,下面265G造梦西游3为

2024年5月2日 03:53

贵阳市义务教育入学服务平台(手机可以报名贵阳小升初链接吗)

贵阳市义务教育入学服务平台(手机可以报名贵阳小升初链接吗)

本文目录手机可以报名贵阳小升初链接吗花溪清华中学小升初入学条件贵阳市义务教育入学服务平台入口地址小升初摇号政策手机可以报名贵阳小升初链接吗手机可以报名贵阳小升初链接正式填报期间,学生可通过以下渠道登录:1、“贵阳市义务教育入学服务平台”网站

2024年2月21日 11:20

切换ip的软件(电脑手机卡快速更换ip)

切换ip的软件(电脑手机卡快速更换ip)

大家好,今天小编来为大家解答以下的问题,关于切换ip的软件,电脑手机卡快速更换ip这个很多人还不知道,现在让我们一起来看看吧!本文目录电脑手机卡快速更换ip什么软件可以大量更换ip地址好用的动态ip软件安卓模拟器可以修改用什么软件来切换ip

2024年7月1日 18:20

中望3D旋转与CAXA旋转的区别?中望隐藏快捷键

中望3D旋转与CAXA旋转的区别?中望隐藏快捷键

本文目录中望3D旋转与CAXA旋转的区别中望隐藏快捷键中望3D2022电脑配置要求和proe相比,中望3D怎么样好用不中望3D全面兼容功能中望3D是什么中望3D可以倒程序吗中望3d能替代solidworks吗中望3D好用吗三维CAD中望3D

2024年6月16日 06:20

logo设计在线生成免费(自己在线制作logo免费,有什么好用的logo手机制作软件吗)

logo设计在线生成免费(自己在线制作logo免费,有什么好用的logo手机制作软件吗)

今天给各位分享自己在线制作logo免费,有什么好用的logo手机制作软件吗的知识,其中也会对自己在线制作logo免费,有什么好用的logo手机制作软件吗进行解释,如果能碰巧解决你现在面临的问题,别忘了关注本站,现在开始吧!本文目录自己在线制

2024年10月12日 03:45

如何申请QQ账号?怎么用微信申请账号呢

如何申请QQ账号?怎么用微信申请账号呢

本文目录如何申请QQ账号怎么用微信申请账号呢怎么申请帐号申请账号怎么申请如何申请微信帐号怎么申请QQ帐号如何申请QQ账号若使用的是vivo手机,可进入手机QQ登陆界面,选择“新用户注册”,然后按提示操作即可完成QQ的注册。【手机注册】1、首

2024年7月23日 06:44

卡巴斯基三个版本区别(卡巴KAV和KIS有什么区别哪个好)

卡巴斯基三个版本区别(卡巴KAV和KIS有什么区别哪个好)

大家好,如果您还对卡巴斯基三个版本区别不太了解,没有关系,今天就由本站为大家分享卡巴斯基三个版本区别的知识,包括卡巴KAV和KIS有什么区别哪个好的问题都会给大家分析到,还望可以解决大家的问题,下面我们就开始吧!本文目录卡巴KAV和KIS有

2024年8月18日 17:50

火影online(火影忍者online什么角色适合平民玩家)

火影online(火影忍者online什么角色适合平民玩家)

本文目录火影忍者online什么角色适合平民玩家玩火影online电脑需要什么配置火影忍者OL九尾鸣人怎么获得火影手游最近氪金严重,是不是版权要到期了火影忍者online什么角色适合平民玩家1、猪脚。名号赤岩之拳,名字非常的酷炫 但其实是个

2024年1月21日 08:20

腾讯会员免费领会员(腾讯视频免费vip怎么领取)

腾讯会员免费领会员(腾讯视频免费vip怎么领取)

各位老铁们,大家好,今天由我来为大家分享腾讯会员免费领会员,以及腾讯视频免费vip怎么领取的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!本文目录腾讯视频免

2024年7月16日 03:02

qq技术导航(在手机QQ聊天里面,有发送位置共享,以前直接点别人发过来的地图,就可以用导航软件直接导航过去,现在)

qq技术导航(在手机QQ聊天里面,有发送位置共享,以前直接点别人发过来的地图,就可以用导航软件直接导航过去,现在)

本文目录在手机QQ聊天里面,有发送位置共享,以前直接点别人发过来的地图,就可以用导航软件直接导航过去,现在QQ看点怎么弄到底部导航栏QQ空间里的导航怎么弄腾讯新出的手机导航怎么样qq首界面导航栏是什么电脑怎么QQ微信怎么使用虚拟定位qq课堂

2024年5月3日 08:35

matlab6 5(matlab 6,5怎么读不出excel的文字)

matlab6 5(matlab 6,5怎么读不出excel的文字)

本文目录matlab 6,5怎么读不出excel的文字matlab6.5安装后用不了 在win7 显示Error in ==> F:\免安装Matlab.6.5.绿色破解U盘便携移动版Matlab6p5FUL有关matlab使用用matla

2023年11月15日 08:00

中国十大购物网站排名(网购网站十大排名)

中国十大购物网站排名(网购网站十大排名)

大家好,今天小编来为大家解答以下的问题,关于中国十大购物网站排名,网购网站十大排名这个很多人还不知道,现在让我们一起来看看吧!本文目录网购网站十大排名中国十大电商平台,有几家你网购过中国十大电商平台都是哪些网购网站十大排名销售网站有哪些十大

2024年5月8日 03:01

爱作业app下载安装(有什么可以检查作业的软件)

爱作业app下载安装(有什么可以检查作业的软件)

大家好,关于爱作业app下载安装很多朋友都还不太明白,不过没关系,因为今天小编就来为大家分享关于有什么可以检查作业的软件的知识点,相信应该可以解决大家的一些困惑和问题,如果碰巧可以解决您的问题,还望关注下本站哦,希望对各位有所帮助!本文目录

2024年7月23日 11:53

同城交友软件是真的么?同城快速约会的交友软件都有哪些

同城交友软件是真的么?同城快速约会的交友软件都有哪些

“同城交友”相关信息最新大全有哪些,这是大家都非常关心的,接下来就一起看看同城交友软件是真的么?同城快速约会的交友软件都有哪些!本文目录同城交友软件是真的么同城快速约会的交友软件都有哪些同城聊天不花钱的软件同城交友是什么意思那么丑也交友吗有

2024年7月3日 12:01

连连看经典旧版下载免费(经典的连连看单机版的,很久以前的,玩习惯的,现在想找都找不到,是一只黄色小恐龙的,宠物小精灵的!)

连连看经典旧版下载免费(经典的连连看单机版的,很久以前的,玩习惯的,现在想找都找不到,是一只黄色小恐龙的,宠物小精灵的!)

本篇文章给大家谈谈连连看经典旧版下载免费,以及经典的连连看单机版的,很久以前的,玩习惯的,现在想找都找不到,是一只黄色小恐龙的,宠物小精灵的!对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助

2024年6月25日 19:16

哪些期货公司开户好银河期户好不好,专业性和公司实力怎么样?用银河期货的人多吗这个平台怎么样

哪些期货公司开户好银河期户好不好,专业性和公司实力怎么样?用银河期货的人多吗这个平台怎么样

本文目录哪些期货公司开户好银河期户好不好,专业性和公司实力怎么样用银河期货的人多吗这个平台怎么样银河期货怎么样最近想开个期货账户银河期货的手续费是多少银河期货怎么开户熟悉的网友来讲一讲~哪个期货软件好用看到有人推荐银河期货一站通APP银河期

2024年3月22日 23:12

近期文章

本站热文

iphone vpn设置(ios设置vpn快捷开关)
2024-07-22 15:01:12 浏览:2342
windows12正式版下载(操作系统Windows Server 2012 R2,在哪能下载到,公司用的)
2024-07-20 17:26:53 浏览:1736
client mfc application未响应(每次进cf就提示client MFC Application未响应该怎么办啊!急急急)
2024-07-20 11:15:58 浏览:1168
java安装教程(win10如何安装JAVA)
2024-07-19 19:55:49 浏览:1164
标签列表

热门搜索