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

相关文章

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执行过程

CSS弹性布局常用设置方式

《CSS弹性布局常用设置方式》文章总结了CSS布局与样式的常用属性和技巧,包括视口单位、弹性盒子布局、浮动元素、背景和边框样式、文本和阴影效果、溢出隐藏、定位以及背景渐变等,通过这些技巧,可以实现复杂... 一、单位元素vm 1vm 为视口的1%vh 视口高的1%vmin 参照长边vmax 参照长边re

CSS3中使用flex和grid实现等高元素布局的示例代码

《CSS3中使用flex和grid实现等高元素布局的示例代码》:本文主要介绍了使用CSS3中的Flexbox和Grid布局实现等高元素布局的方法,通过简单的两列实现、每行放置3列以及全部代码的展示,展示了这两种布局方式的实现细节和效果,详细内容请阅读本文,希望能对你有所帮助... 过往的实现方法是使用浮动加

Python进阶之Excel基本操作介绍

《Python进阶之Excel基本操作介绍》在现实中,很多工作都需要与数据打交道,Excel作为常用的数据处理工具,一直备受人们的青睐,本文主要为大家介绍了一些Python中Excel的基本操作,希望... 目录概述写入使用 xlwt使用 XlsxWriter读取修改概述在现实中,很多工作都需要与数据打交

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Spring Security 从入门到进阶系列教程

Spring Security 入门系列 《保护 Web 应用的安全》 《Spring-Security-入门(一):登录与退出》 《Spring-Security-入门(二):基于数据库验证》 《Spring-Security-入门(三):密码加密》 《Spring-Security-入门(四):自定义-Filter》 《Spring-Security-入门(五):在 Sprin