精确定位及恢复ListView的位置

PyWinAuto桌面自动化:从原理到实战的完整指南 桌面自动化技术通过模拟用户操作,实现对图形界面应用程序的自动控制,其核心原理在于与操作系统底层API的交互。在Windows平台,这项技术主要依赖Win32 API和UI Automation两种后端引擎,前者通过发送Windows消息与经典应用通信,后者则利用为辅助技术设计的框架来访问现代应用的控件树。从技术价值看,桌面自动化能显著提升测试效率、减少重复劳动,并确保操作的一致性,广泛应用于软件测试、数据录入、办公流程自动化等场景。PyWinAuto作为Python生态中成熟的桌面自动化库,封装了上述底层机 阅读详情

工作中遇到一个需求,对ListView某一项操作后刷新ListView,但是如果直接刷新,界面上ListView从第一列开始显示,用户体验不好,于是在网上搜了一些恢复LIstView滑动位置的方法。解决办法如下:


    List<HashMap<String, String>> list;
private int scrollPos;
    private int scrollTop;

    private void showLocalMp3() {
        
        list = new ArrayList<HashMap<String,String>>();
        LocalMP3Infor mp3Infor = null;
        HashMap<String, String> tempMap = null;
        
        for(int i=0; i<mp3InforList.size(); i++) {
            mp3Infor = (LocalMP3Infor)mp3InforList.get(i);
            tempMap = new HashMap<String, String>();
            tempMap.put("mp3_name", mp3Infor.getMp3_name());
            tempMap.put("mp3_size", mp3Infor.getMp3_size());
            list.add(tempMap);
        }
        
        SimpleAdapter simpleAdapter =
                new SimpleAdapter(this, list, R.layout.mp3list_resource, new String[] {"mp3_name", "mp3_size"}, new int[] {R.id.name, R.id.size});
        
        
        //给ListView设置监听器  【用来恢复ListView位置的】
        listView.setOnScrollListener(scrollListener);  
          
        setListAdapter(simpleAdapter);
        
        //在setListAdapter之后恢复ListView的位置
        listView.setSelectionFromTop(scrollPos, scrollTop);
        
    }
    
    private OnScrollListener scrollListener = new OnScrollListener() {  
           
        @Override  
        public void onScroll(AbsListView arg0, int arg1, int arg2, int arg3) {  
        }  

        @Override  
        public void onScrollStateChanged(AbsListView view, int scrollState) {  
            
                if (scrollState == OnScrollListener.SCROLL_STATE_IDLE) {  
                        // scrollPos记录当前可见的List顶端的一行的位置   
                       scrollPos = listView.getFirstVisiblePosition();   
                }  
                if (list != null) {   
                    
                      View v=listView .getChildAt(0);  
                      
                      scrollTop=(v==null)?0:v.getTop();  
                }    
 }  
}; 

 

参考:http://stackoverflow.com/questions/3014089/scroll-to-a-position-in-a-listview 


之前在网上搜到的,有另外两种方法
第一种:
在onScrollStateChanged里面 

scrolledX = listView.getScrollX(); 

 scrolledY = listView.getScrollY(); 

恢复时使用listView.scrollTo(scrolledX, scrolledY); 

 但是得到的scrolledY为0
第二种:
在onScrollStateChanged里面

position = listView.getFirstVisiblePosition(); 

用position记录显示在屏幕顶端的一个item,

恢复时使用listView.setSelection(position); 

但是这种方法不够精确
最后用setSelectionFromTop实现的

Flutter Provider状态管理实战:从原理到生产级落地 在Flutter开发中,状态管理是连接数据与UI的核心枢纽。其本质是利用InheritedWidget的高效数据分发机制,通过声明式API实现跨组件、跨层级的状态共享与响应。Provider作为官方推荐的轻量级方案,以极低的学习成本和高可维护性,成为80%中小型项目的首选——它不引入新范式,而是将底层能力工程化封装。技术价值体现在解耦业务逻辑与UI刷新、支持细粒度重建(如Selector)、天然兼容DevTools调试。典型应用场景包括用户登录态同步、主题切换、表单联动、实时数据展示等。本文聚焦Provid 阅读详情

相关推荐

C标准库深度解析:从文件操作到内存管理的核心原理与嵌入式实践

C标准库是C语言编程的基石,它通过提供一套标准化的函数接口,实现了对底层硬件和操作系统的抽象,确保了代码的可移植性。其核心原理在于封装了文件I/O、内存管理、字符处理等通用操作,使开发者无需关注平台差异。在技术价值上,标准库不仅提升了开发效率,更是编写健壮、安全代码的关键,例如通过检查函数返回值来预防错误,以及理解内存分配机制以避免泄漏。这些基础概念广泛应用于系统编程、嵌入式开发和高性能计算等领域。本文聚焦于文件流操作、格式化输入的安全隐患、字符分类函数的可移植性实现,以及动态内存管理的内部机制,并结合嵌入

487

ListView添加头部之后出现位置获取错乱的问题解决方案

/**  * Add a fixed view to appear at the top of the list. If addHeaderView is  * called more than once, the views will appear in the order they were  * added. Views added using this call can take f

Blue的博客 3258

基于UI自动化与AI大模型的微信智能助手开发实战

UI自动化(UI Automation)是一种通过程序模拟用户操作,与软件图形界面进行交互的技术。其核心原理是调用操作系统提供的标准化接口(如Windows UI Automation框架),来识别、定位并控制应用程序中的窗口、按钮、输入框等UI元素,从而实现自动化任务执行。这项技术的价值在于,它无需破解或依赖软件的内部协议,仅在前端模拟人类行为,因此在稳定性和合规性上具有显著优势,尤其适用于对现有封闭式软件(如即时通讯客户端)进行功能扩展。在自动化办公、智能客服、数据采集等应用场景中,UI自动化常与AI能

dengyulong的专栏 437

记录ListView当前的精确位置

如上图所示,两个”标签页“,直播室和聊天室。如果你的这个界面不是通过ViewPager来实现的,而是通过一个ListView,点击直播室或者聊天室切换的只是数据源,而非View。这时候在你切换之前可能需要记录一下当前ListView的位置,为了方便切换回来的时候回到之前的位置(默认是回到顶部)。 记录位置具体方法如下: int prevSelection = listView.getFirst

njweiyukun的博客 1952

C# WinForms ListView显示数据库数据:手写循环填充与避坑指南

在C# WinForms开发中,ListView是展示数据库记录常用的列表控件,但很多初学者会误以为它能像DataGridView那样直接通过DataSource属性绑定数据。实际上,ListView没有DataSource属性,也不具备默认的数据绑定能力,它只认ListViewItem和SubItems。理解这一点是掌握该控件的关键。本文从ADO.NET取数原理出发,介绍如何借助DataTable与循环遍历,将数据库中的行记录逐条封装为ListViewItem并填充到列表,同时剖析列头定义、SubItem

weixin_34072637的博客 311

拖动视图Delphi实现,在列表中拖动图标..rar

拖动视图Delphi实现,在列表中拖动图标..rar

ListView,GridView等内容显示错位错乱问题

ListView,GridView等控件需要显示更为丰富的内容时,需要自定义适配器,一般是继承ArrayAdapter。 自定义的Adapter有时会遇见内容显示错位错乱等奇怪问题。 根据具体问题可以尝试以下几种办法解决: 1.一时隐藏的内容设置Invisible,设置Gone的话可能会造成数据显示不准确。 不需要隐藏的内容设置Visible。 2.内容错位如果使用的是L

实现红萝卜的梦想 3508

Android listview定位到上次显示的位置的实现方法

主要介绍了Android listview定位到上次显示的位置的实现方法的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下

lvgl 文本输入框滚动到可见位置

【代码】lvgl 文本输入框滚动到可见位置。

-凌凌漆-的博客 1974

CST Studio Suite安装详细教程(附安装包)CST Studio Suite 2024超详细安装教程

CST Studio Suite 2024安装指南摘要:本文详细介绍了CST Studio Suite 2024电磁仿真软件的下载与安装流程,包含23个图文步骤说明,从解压安装包到配置许可证服务器。重点提示了以管理员身份运行、自定义安装路径等关键步骤,并提供了常见问题解决方案和入门技巧。该软件适用于天线设计、PCB分析等高频电磁场仿真,安装后需通过localhost:27000连接许可证服务器完成激活。

pythonqiang9的博客 1万+

Vivado ILA抓不到低频信号?试试Capture Control模式,保姆级配置教程(附PWM调试实例)

本文详细解析了Vivado ILA的Capture Control模式在低频信号捕获中的应用,特别针对PWM调试等场景提供保姆级配置教程。通过条件采样和时间拉伸技术,有效解决传统ILA采样在低频信号调试中的存储深度不足、关键信号丢失等问题,并附赠呼吸灯PWM的完整调试实例,帮助FPGA开发者提升调试效率。

weixin_42549451的博客 351

ListView的定位

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_33935777的博客 159

家长必看!用RouterOS轻松屏蔽不良网站,保护孩子上网安全

本文为家长提供了一份详细的RouterOS路由器配置指南,旨在通过技术手段保护儿童上网安全。文章核心介绍了如何利用RouterOS的DNS静态条目功能,轻松实现禁止访问特定不良网站,并结合防火墙时间规则,为孩子构建一个纯净、可控的家庭网络环境,操作简单,无需专业背景。

weixin_28363123的博客 1270

listview gridview采用setAdapter后如何精确恢复之前的位置

该文章,紧密衔接上一篇《notifyDatasetChanged() listview gridview 不生效的一种加分享别人的遇到的情况》    因为在由于使用了setAdapter不断的来绑定, 绑定以后位置就会回到0, 所以当你滑动后, 做出了变化, 却立刻被滚回到最前面了, 这是很郁闷的. 解决方案(感谢)来源于: http://www.eoeandroid.com/thread-

jzlhll123的专栏 729

车辆横向控制MPC实战:从‘老王模型’到CasADi求解的保姆级避坑指南

本文详细解析了车辆横向控制MPC的实战应用,从经典动力学模型选择到CasADi求解器的优化配置,提供了一套完整的避坑指南。重点介绍了车辆动力学模型的验证要点、CasADi环境的高效配置技巧以及MPC问题建模的核心要素,帮助开发者快速实现稳健的横向控制方案。

weixin_42524499的博客 346

MATPOWER下载安装教程

将MATPOWER文件复制在C:\Program Files (x86)\MATLAB\R2016b\bin目录下。原来的窗口中多了很多文件路径,点击【保存】,再点击【关闭】选择所要添加的MATPOWER文件夹,点击【选择文件夹】二、将MATPOWER放在bin目录下。找到菜单栏的【设置路径】点击【添加并包含子文件】一、从官网下载后解压。

weixin_47365903的博客 2万+

listview 精确定位

工作中遇到一个需求,对ListView某一项操作后刷新ListView,但是如果直接刷新,界面上ListView从第一列开始显示,用户体验不好,于是在网上搜了一些恢复LIstView滑动位置的方法。解决办法如下:     List> list; private int scrollPos;     private int scrollTop;     private void

langwang2的专栏 435

YOLOv11改进策略【卷积层】| TIP 2025 MFA 多阶段特征聚合 大核扩感受 + 多梯度融合,强效增强弱小目标特征

红外弱小目标尺寸极小、信噪比低,在特征传递中极易丢失信息;常规卷积感受野单一、梯度源不足,难以同时捕捉局部细节与全局上下文,导致小目标特征表达弱、检测漏检。因此提出多阶段特征聚合 MFA,用大核卷积+多分支+通道注意力强化小目标特征提取。

Limiiiing的博客 590

UWP 中 ListView 与 GridView 的实战指南:基于 Windows-universal-samples XamlListView 示例的源码解析

本篇技术指南围绕 Windows-universal-samples 仓库中的 [XamlListView 示例](https://link.gitcode.com/i/6bec171b21deb8e6a3dc1808fed545e3) 展开,系统讲解 Universal Windows Platform(UWP)中 ListView 与 GridView 两个核心控件的六种典型用法:分组列表、响

gitblog_00045的博客 338

国科大学习资料--人工智能原理与算法-2021年期末考试题解析(学长整理)

国科大学习资料–人工智能原理与算法-2021年期末考试题解析(学长整理) 国科大学习资料–人工智能原理与算法-2021年期末考试题解析(学长整理) 国科大学习资料–人工智能原理与算法-2021年期末考试题解析(学长整理) 根据学弟的反馈,该年的期末题只有5道,且均是作业题(所以大家一定要积极完成作业,考前多做几遍!!!!) 下面解析: 3.25 由于该题,我没有做过,所以只能给你英文版的答案。答案如下,其他的题目答案都是中文版。 5.9 8.10 12.20 15.13 ...

无名何许人的博客 3984

大模型新闻摘要生成质量评估工具

大模型新闻摘要生成质量评估工具 关键词:大模型、新闻摘要、质量评估、自然语言处理、算法 摘要:本文将探讨大模型新闻摘要生成质量评估工具的设计与应用。首先介绍大模型新闻摘要生成的背景和问题,然后深入分析质量评估的难点和重要性,接着介绍大模型的

AI天才研究院 828

Python生态GUI框架:Gooey、Pywinauto、PyQuery、JustPy、Maliang、WhakerPy

Python生态GUI框架:Gooey、Pywinauto、PyQuery、JustPy、Maliang、

lonelymanontheway的博客 671

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

腰鼓制作基于HarmonyOS ArkTS API 24在 ArkTS 中,TextInput 组件的 onChange 回调返回的值类型是字符串,将数值字段以字符串形式存储在状态中

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。本文以一个名为"智能账单"的三标签页记账应用为切入点,逐层拆解其数据模型设计、@Builder 组件复用策略、@State 状态管理机制、条件渲染导航模式,以及静态写死渲染与动态循环渲染之间的性能权衡,为

jin421352的博客 197

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

螺钿坊在 ForEach 循环中书写 Array(8).fill(0).map((_, i) => i) 这样的表达式,SHELL_IDX 这样的命名既表达了数组的内容(贝壳索引)

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。本文以一个名为"智能账单"的三标签页记账应用为切入点,逐层拆解其数据模型设计、@Builder 组件复用策略、@State 状态管理机制、条件渲染导航模式,以及静态写死渲染与动态循环渲染之间的性能权衡,为

jin421352的博客 168

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

私教健身管理应用基于HarmonyOS API 24实战解析ArkTS 的 @State、@Builder、@Component 等装饰器和修饰符,为状态管理、组件复用和模块化开发

在 HarmonyOS NEXT 正式商用的背景下,ArkTS 作为鸿蒙生态的官方应用开发语言,正在从传统的命令式 UI 开发范式向声明式 UI 范式全面迁移。ArkUI 框架以组件化、声明式、状态驱动为核心特征,要求开发者以"描述 UI 应该是什么样"而非"一步步操作 UI 怎么变"的思维方式构建界面。

2401_86031952的博客 167
上一篇: @+id/android:list"和"@android:id/list"的写法
下一篇: 精确定位ListView
gwpJava
博客等级 码龄14年 11粉丝 91原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值