ListView的进阶-跳转 下拉 上拉 多布局重用

2024-08-30 01:32

本文主要是介绍ListView的进阶-跳转 下拉 上拉 多布局重用,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

珍惜作者劳动成果 转载请注明出处

实现item监听跳转到指定页面

监听注册

listView.setOnItemClickListener(this);

回调方法

@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Object item = parent.getAdapter().getItem(position);if (item instanceof Entry) {Entry entry = (Entry) item;Toast.makeText(MainActivity.this, entry.getText(), Toast.LENGTH_SHORT).show();
}

实现下拉刷新, 下拉加载功能

监听注册

//实现下拉刷新, 上拉加载listView.setOnTouchListener(this);listView.setOnScrollListener(this);

事件处理

 //实现下拉刷新@Overridepublic boolean onTouch(View v, MotionEvent event) {View childAt = ((ViewGroup) v).getChildAt(0);if (childAt == null) {return false;}//必须第一个完全可见才可以if (firstVisibleItem == 0 && childAt.getTop() == v.getPaddingTop()) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:downY = event.getY();break;case MotionEvent.ACTION_UP:if (event.getY() > downY) {Toast.makeText(MainActivity.this, "正在刷新...", Toast.LENGTH_SHORT).show();//刷新数据isRefreshing =true;ResultServer server = Tools.getInsances(ResultServer.class);page = 0;//别忘了清空一下adapter.clear();server.getResult(page,10).execute(this);}break;}}return false;}@Overridepublic void onScrollStateChanged(AbsListView view, int scrollState) {}@Overridepublic void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {this.firstVisibleItem = firstVisibleItem;//实现上拉加载:if(totalItemCount - (firstVisibleItem + visibleItemCount) < 5){
//            Toast.makeText(MainActivity.this, "需要加载了", Toast.LENGTH_SHORT).show();if (!isRefreshing) {isRefreshing= true;ResultServer server = Tools.getInsances(ResultServer.class);page += 10;server.getResult(page, 10).execute(this);}}}

如何进行多布局重用

我们需要重写两个方法

@Overridepublic View getView(int position, View convertView, ViewGroup parent) {if (convertView == null) {if (getItemViewType(position) == 0) {convertView = inflater.inflate(R.layout.item_single, parent, false);} else {convertView = inflater.inflate(R.layout.item_muti, parent, false);}convertView.setTag(new ViewHolder(convertView));}ViewHolder holder = (ViewHolder) convertView.getTag();holder.title.setText(list.get(position).getTitle());holder.source.setText(list.get(position).getSource());holder.time.setText(list.get(position).getTime());ImageUtil.loadImage(holder.image, list.get(position).getImage());if (getItemViewType(position) == 1){ImageUtil.loadImage(holder.image1, list.get(position).getImgExtra().get(0).get("imgsrc"));ImageUtil.loadImage(holder.image2, list.get(position).getImgExtra().get(1).get("imgsrc"));}return convertView;}private static class ViewHolder {private TextView title;private TextView source;private TextView time;private ImageView image;private ImageView image1;private ImageView image2;public ViewHolder(View itemView) {title = (TextView) itemView.findViewById(R.id.title);source = (TextView) itemView.findViewById(R.id.source);time = (TextView) itemView.findViewById(R.id.time);image = (ImageView) itemView.findViewById(R.id.image);image1 = ((ImageView) itemView.findViewById(R.id.image1));image2 = ((ImageView) itemView.findViewById(R.id.image2));}}//多布局复用@Override                //控件的位置public int getItemViewType(int position) {if (list.get(position).getImgExtra() == null) {return 0;} else {return 1;}}//多少个布局@Overridepublic int getViewTypeCount() {return 2;}

这篇关于ListView的进阶-跳转 下拉 上拉 多布局重用的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1119423

相关文章

深度解析Python装饰器常见用法与进阶技巧

《深度解析Python装饰器常见用法与进阶技巧》Python装饰器(Decorator)是提升代码可读性与复用性的强大工具,本文将深入解析Python装饰器的原理,常见用法,进阶技巧与最佳实践,希望可... 目录装饰器的基本原理函数装饰器的常见用法带参数的装饰器类装饰器与方法装饰器装饰器的嵌套与组合进阶技巧

从基础到进阶详解Pandas时间数据处理指南

《从基础到进阶详解Pandas时间数据处理指南》Pandas构建了完整的时间数据处理生态,核心由四个基础类构成,Timestamp,DatetimeIndex,Period和Timedelta,下面我... 目录1. 时间数据类型与基础操作1.1 核心时间对象体系1.2 时间数据生成技巧2. 时间索引与数据

CSS3 布局样式及其应用举例

《CSS3布局样式及其应用举例》CSS3的布局特性为前端开发者提供了无限可能,无论是Flexbox的一维布局还是Grid的二维布局,它们都能够帮助开发者以更清晰、简洁的方式实现复杂的网页布局,本文给... 目录深入探讨 css3 布局样式及其应用引言一、CSS布局的历史与发展1.1 早期布局的局限性1.2

html5的响应式布局的方法示例详解

《html5的响应式布局的方法示例详解》:本文主要介绍了HTML5中使用媒体查询和Flexbox进行响应式布局的方法,简要介绍了CSSGrid布局的基础知识和如何实现自动换行的网格布局,详细内容请阅读本文,希望能对你有所帮助... 一 使用媒体查询响应式布局        使用的参数@media这是常用的

前端CSS Grid 布局示例详解

《前端CSSGrid布局示例详解》CSSGrid是一种二维布局系统,可以同时控制行和列,相比Flex(一维布局),更适合用在整体页面布局或复杂模块结构中,:本文主要介绍前端CSSGri... 目录css Grid 布局详解(通俗易懂版)一、概述二、基础概念三、创建 Grid 容器四、定义网格行和列五、设置行

Spring Boot + MyBatis Plus 高效开发实战从入门到进阶优化(推荐)

《SpringBoot+MyBatisPlus高效开发实战从入门到进阶优化(推荐)》本文将详细介绍SpringBoot+MyBatisPlus的完整开发流程,并深入剖析分页查询、批量操作、动... 目录Spring Boot + MyBATis Plus 高效开发实战:从入门到进阶优化1. MyBatis

Java进阶学习之如何开启远程调式

《Java进阶学习之如何开启远程调式》Java开发中的远程调试是一项至关重要的技能,特别是在处理生产环境的问题或者协作开发时,:本文主要介绍Java进阶学习之如何开启远程调式的相关资料,需要的朋友... 目录概述Java远程调试的开启与底层原理开启Java远程调试底层原理JVM参数总结&nbsMbKKXJx

MySQL进阶之路索引失效的11种情况详析

《MySQL进阶之路索引失效的11种情况详析》:本文主要介绍MySQL查询优化中的11种常见情况,包括索引的使用和优化策略,通过这些策略,开发者可以显著提升查询性能,需要的朋友可以参考下... 目录前言图示1. 使用不等式操作符(!=, <, >)2. 使用 OR 连接多个条件3. 对索引字段进行计算操作4

CSS3 最强二维布局系统之Grid 网格布局

《CSS3最强二维布局系统之Grid网格布局》CS3的Grid网格布局是目前最强的二维布局系统,可以同时对列和行进行处理,将网页划分成一个个网格,可以任意组合不同的网格,做出各种各样的布局,本文介... 深入学习 css3 目前最强大的布局系统 Grid 网格布局Grid 网格布局的基本认识Grid 网

JavaScript中的reduce方法执行过程、使用场景及进阶用法

《JavaScript中的reduce方法执行过程、使用场景及进阶用法》:本文主要介绍JavaScript中的reduce方法执行过程、使用场景及进阶用法的相关资料,reduce是JavaScri... 目录1. 什么是reduce2. reduce语法2.1 语法2.2 参数说明3. reduce执行过程