ListView事件监听

Android-使用ListView时点击listview中的控件setOnItemClickListener()方法不执行(回调) 在使用ListView时点击listview中的控件setOnItemClickListener()方法不执行(回调) 如果ListView中的单个Item的view中存在checkbox,button等view,会导致setOnItemClickListener无效,事件会被子View捕获到,ListView无法捕获处理该事件. 解决方法是:在checkbox、button对应的 阅读详情

ListView系列(一)

ListView的事件监听


ListView是我们Android最常见的控件之一,有必要对他的监听事件做出整理和分析。

ListView的事件包括:

  • OnItemClickListener(ListView子项目的点击事件,不是item上按钮的点击事件)
  • OnScrollListener(ListView整体的滑动事件)

下面分别来作简要介绍:

OnItemClickListener:


listview.setOnItemClickListener(
new AdapterView.OnItemClickListener()

给ListView设置item监听需要一个实现onItemClick方法的监听器
对item点击要执行的代码放在onItemClick方法中。


onItemClick
public void onItemClick (AdapterView<?> parent, 
View view, int position, long id )
参数类型含义
parentAdapterView相当于listview 适配器的一个指针,可以通过它来获得ListView里装着的一切东西,再通俗点就是说告诉你,你点的是哪一个
viewView就是你点的那个Item的句柄,通过他你可以得到这个item的一切,并且进行相关操作
positionint确定你所点的item在整个List里的位置(下表从0开始)
idlong一般情况下id跟position一样(你可以尝试Log下)

Tip:不懂AdaView<?>为何物的童鞋看下来:AbsListView是用于实现条目的虚拟列表的基类. 这里的列表没有空间的定义。 例如,该类的子类可以以网格的形式、走马灯的形式显示,或者作为堆栈等等。

  • 嵌套类 class AbsListView.LayoutParams
    AbsListView 扩展了 LayoutParams 以提供空间来保存试图类型。
  • interface AbsListView.OnScrollListener
    为了在列表或网格滚动时执行回调函数而定义的接口。
  • interface AbsListView.RecyclerListener
    RecyclerListener 是用于接收视图被移动到待回收堆中时的消息的监听器.
    //继承关系:
        java.lang.Object
            android.view.View
               android.view.ViewGroup
                      android.widget.AdapterView<T extends android.widget.Adapter>
                             android.widget.AbsListView

OnScrollListener

listview.setOnScrollListener(
new AbsListView.OnScrollListener()

给listView设置滑动监听需要实现的onScroll和onScollStateChange方法的监听器

    public void onScrollStateChanged(
    AbsListView view, int scrollState)

滑动状态改变时调用

 public void onScroll(
 AbsListView view, int firstVisibleItem, 
 int visibleItemCount, int totalItemCount)

滑动时调用


onScrollStateChanged
public void onScrollStateChanged(
AbsListView view, int scrollState)
变量类型含义
viewAbsListView滑动的那个ListVIew
scrollStateint滑动状态
switch (scrollState){
                    case SCROLL_STATE_IDLE://静止状态
                        break;
                    case SCROLL_STATE_TOUCH_SCROLL://手指在屏幕上滑动状态
                        break;
                    case SCROLL_STATE_FLING://手指停止滑动,屏幕依然在滑动的状态
                        break;
                }
onScroll
public void onScroll(AbsListView view, int firstVisibleItem, 
 int visibleItemCount, int totalItemCount)
变量类型含义
viewAbsListView正在被执行操作的ListView
firstVisiableItemint第一个可以被看见的item
visibleItemCountint可以被看见的item总数
totalItemCountintitem总数

此方法在滚动时一直回调,直到停止滚动时才停止回调。单击时回调一次。
可以用来判断是否滚动到最后一个(可以用来执行刷新判断,或者进行预加载,当用户看到第几个的时候去执行网络请求,避免给客户造成程序卡顿的错觉。):

firstVisibleItem + visibleItemCount == totalItemCount
 && totalItemCount > 0
GTSAM | gtsam::ISAM2 本节简单介绍`gtsam::ISAM2`类。 阅读详情

相关推荐

【AI实战】用Coze工作流打造抖音视频文案提取神器——从单链接到批量处理的进阶指南

本文详细介绍了如何利用Coze工作流打造抖音视频文案提取工具,从单链接处理到批量提取的进阶指南。通过AI技术和工作流的结合,用户可以高效提取抖音视频的ASR和OCR文本,大幅提升内容创作效率。文章还涵盖了性能优化、异常处理及实际应用场景扩展,助力开发者快速实现抖音文案自动化提取。

weixin_29210759的博客 280

Android--ListView作用详解

1.ListView   ListView列表视图控件是Android中常用的控件之一,其直接继承了AbsListView,是一个以垂直方式在项目中显示View视图的列表。ListView的数据项,来自一个继承了ListAdapter接口的适配器。   ListView的常用属性一般就是用来设置列表的间隔、分割线、表头、表尾等属性的,常用属性有以下几个,并且Android也为其提供了对应的se...

streate的专栏 5705

UEC++ 虚幻5笔记(数字孪生示例) day13

文件读取与写入,数字孪生入门制作

qq_44924388的博客 3842

Android ListView.setsetOnItemClickListener

作者:LoveEmperor_王子様 新建listView不必多说; ListView android:id="@+id/zhangtaoList" android:layout_width="200dp" android:layout_height="150dp" android:background="@color/aqua" andro

你当像鸟飞往你的山~~ 600

切比雪夫(最小区域法)直线拟合算法

切比雪夫,最小区域法直线拟合

闪电彬彬的博客 3962

详细介绍:国产操作系统银行麒麟V10的下载和安装

银河麒麟是由。银河麒麟已经发展为银河麒麟服务器操作系统、桌面操作系统、嵌入式操作系统、麒麟云、操作系统增值产品为代表的产品线。为攻克中国软件核心技术“卡脖子”的短板,银河麒麟建设自主的开源供应链,发起中国首个开源桌面操作系统根社区openKylin,银河麒麟操作系统以openKylin等自主根社区为依托,发布最新版本。

lz17267861157的博客 1万+

【bug记录】关于listview的setOnItemClickListener点击事件不生效。

关于listview的setOnItemClickListener点击事件不生效。

niuguobao的博客 3338

软考中级信息系统监理师(第二版)-第21章基础设施工程监理

由于网络信息技术的飞速发展,变化日新月异,网络设计不但要保证目前网络传输容量的要求,也要考虑今后网络的发展,满足当前以及今后相当一段时间内的网络需求,便于向新技术的升级和衔接,同时又需要保护原有的投资。通用布缆系统工程中,承建单位的竣工文档主要包括以下内容:承建合同,招标文件,投标文件,设计方案,工程实施组织设计方案,工程施工报告,隐蔽工程记录,变更记录,自测报告,信息点分布图(表),园区、楼宇、水平配线表,楼层平面图及无线设备点位图,无线设备信息表,竣工图纸等。多排安装时,列间距不应小于1200mm。

2301_78583973的博客 1400

android listview的监听

利用ListView设计一个班级成员列表。设计要求:(1)列表的每个子项均包含2项内容:证件照片和姓名;(2)完成ListView子项目的点击监听,将点击的子项目中的姓名以toast的方式显示出来。 如下图所示: 1、初始化相关代码: ll = (ListView) findViewById(R.id.ll); final String[] name = {"张三", "李四", "王五"}; int[] pic=new int[]{R.drawable.wxh,R

美女的博客 1338

带隙基准电路设计实战:从HSPICE仿真到Virtuoso版图全流程解析

在模拟集成电路设计中,基准电压源是确保系统精度与稳定性的核心模块。其基本原理在于巧妙结合具有正、负温度系数的电压,通过加权求和实现近似零温度系数的稳定输出,这一特性对于高精度数据转换器、电源管理芯片等至关重要。从工程实践角度,利用HSPICE进行深入的直流工作点、温度扫描和工艺角仿真,是验证电路性能、优化温度系数和电源抑制比的关键步骤。而借助Cadence Virtuoso进行版图实现时,必须重点关注电阻与BJT的匹配布局、敏感节点的保护以及电源完整性设计,以确保设计意图在硅片上得以准确呈现。通过完整的从前

weixin_29181861的博客 287

人工智能之语言领域 自然语言处理 第六章 情感分析

情感分析(Sentiment Analysis),又称意见挖掘(Opinion Mining),旨在自动识别和提取文本中表达的主观情感、态度或情绪。从用户评论到社交媒体,从产品反馈到政治舆情,情感分析已成为企业决策、品牌监控和人机交互的关键技术。本章将深入介绍情感分析的层级结构、核心技术、主流模型,并通过社交媒体舆情实战案例完整演示分析与可视化流程。层级目标示例词级(Word-level)判断单个词的情感倾向“好” → 正面;“差” → 负面句级(Sentence-level)判断整个句子的情感极性。

咚咚王者的博客 857

事件监听、ListView的优化及使用

一、ListView的优化&amp;amp;amp;使用 ListView的优化:ListView的优化主要包括两个方面,分别是对自身的优化以及其适配器(Adapter)的优化。 1、使用ViewHolder模式来提高效率 Viewholder模式充分了ListView的视图缓存机制,避免了每次在调用getView的时候都去通过findViewById实例化数据。 2、异步加载:耗时的操作放在异步线程中 如果在a...

Ann257725的博客 297

STM32F401RCT6最小系统原理图设计

STM32F401RCT6最小系统原理图设计一、主控芯片二、电源电路三、晶振电路三、下载电路四、完整电路图      本文章基于STM32F401RCT6进行最小系统原理图设计,包含主控芯片,电源,晶振电路,下载电路等几部分 一、主控芯片 主控芯片采用STM32F401RCT6,需注意: VBAT在不接电池的情况下需接3.3V,VDDAVREF+需接3.3V,否则会造成芯片供电不正常,无法启动和识别的情况 VDDAVREF+和VCAP1处电容需按照规格书

weixin_43278295的博客 2万+

Android-ListView两种适配器以及事件监听

Android-ListView两种适配器ListView在安卓App中非常常见,几乎每一个App都会有涉及,比如QQ消息列表,或者是 通讯录还有就是酷我音乐的歌曲列表都是ListView、继承ListView。所以非常重要。 这就是ListViewArrayAdapter 数据源是数据或者集合,比较简单 布局文件<?xml version="1.0" encoding="utf-8"?

Kid_TH的博客 5390

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

android ListView 应用及事件监听方法

ListView :在Android应用开发过程中属于最常用的系统组件之一,当然可能童鞋们问为什么会突然游戏开发中讲这个,呵呵,其实在游戏开发中,也会常常使用到系统组件,比如游戏排行榜,简单的游戏关卡选择等等,都可以来使用ListView来实现;    当然关于ListView我

xiao229404041的专栏 8370

深度学习工具包 DeepLearningToolbox

深度学习工具包Deprecation notice.-----This toolbox is outdated and no longer maintained.There are much better tools available for deep learning than this toolbox, e.g. [Theano](http://deeplearning.net/software/theano/), [torch](http://torch.ch/) or [tensorflow](http://www.tensorflow.org/)I would suggest you use one of the tools mentioned above rather than use this toolbox.Best, Rasmus.DeepLearnToolbox================A Matlab toolbox for Deep Learning.Deep Learning is a new subfield of machine learning that focuses on learning deep hierarchical models of data.It is inspired by the human brain's apparent deep (layered, hierarchical) architecture.A good overview of the theory of Deep Learning theory is[Learning Deep Architectures for AI](http://www.iro.umontreal.ca/~bengioy/papers/ftml_book.pdf)For a more informal introduction, see the following videos by Geoffrey Hinton and Andrew Ng.* [The Next Generation of Neural Networks](http://www.youtube.com/watch?v=AyzOUbkUf3M) (Hinton, 2007)* [Recent Developments in Deep Learning](http://www.youtube.com/watch?v=VdIURAu1-aU) (Hinton, 2010)* [Unsupervised Feature Learning and Deep Learning](http://www.youtube.com/watch?v=ZmNOAtZIgIk) (Ng, 2011)If you use this toolbox in your research please cite [Prediction as a candidate for learning deep hierarchical models of data](http://www2.imm.dtu.dk/pubdb/views/publication_details.php?id=6284)```@MASTERSTHESIS\{IMM2012-06284, author = "R. B. Palm", title = "Prediction as a candidate for learning deep hierarchical models of data", year = "2012",}```Contact: rasmusbergpalm at gmail dot comDirectories included in the toolbox-----------------------------------`NN/` - A library for Feedforward Backpropagation Neural Networks`CNN/` - A library for Convolutional Neural Networks`DBN/` - A library for Deep Belief Networks`SAE/` - A library for Stacked Auto-Encoders`CAE/` - A library for Convolutional Auto-Encoders`util/` - Utility functions used by the libraries`data/` - Data used by the examples`tests/` - unit tests to verify toolbox is workingFor references on each library check REFS.mdSetup-----1. Download.2. addpath(genpath('DeepLearnToolbox'));Example: Deep Belief Network---------------------```matlabfunction test_example_DBNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit RBM and visualize its weightsrand('state',0)dbn.sizes = [100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);figure; visualize(dbn.rbm{1}.W'); % Visualize the RBM weights%% ex2 train a 100-100 hidden unit DBN and use its weights to initialize a NNrand('state',0)%train dbndbn.sizes = [100 100];opts.numepochs = 1;opts.batchsize = 100;opts.momentum = 0;opts.alpha = 1;dbn = dbnsetup(dbn, train_x, opts);dbn = dbntrain(dbn, train_x, opts);%unfold dbn to nnnn = dbnunfoldtonn(dbn, 10);nn.activation_function = 'sigm';%train nnopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.10, 'Too big error');```Example: Stacked Auto-Encoders---------------------```matlabfunction test_example_SAEload mnist_uint8;train_x = double(train_x)/255;test_x = double(test_x)/255;train_y = double(train_y);test_y = double(test_y);%% ex1 train a 100 hidden unit SDAE and use it to initialize a FFNN% Setup and train a stacked denoising autoencoder (SDAE)rand('state',0)sae = saesetup([784 100]);sae.ae{1}.activation_function = 'sigm';sae.ae{1}.learningRate = 1;sae.ae{1}.inputZeroMaskedFraction = 0.5;opts.numepochs = 1;opts.batchsize = 100;sae = saetrain(sae, train_x, opts);visualize(sae.ae{1}.W{1}(:,2:end)')% Use the SDAE to initialize a FFNNnn = nnsetup([784 100 10]);nn.activation_function = 'sigm';nn.learningRate = 1;nn.W{1} = sae.ae{1}.W{1};% Train the FFNNopts.numepochs = 1;opts.batchsize = 100;nn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.16, 'Too big error');```Example: Convolutional Neural Nets---------------------```matlabfunction test_example_CNNload mnist_uint8;train_x = double(reshape(train_x',28,28,60000))/255;test_x = double(reshape(test_x',28,28,10000))/255;train_y = double(train_y');test_y = double(test_y');%% ex1 Train a 6c-2s-12c-2s Convolutional neural network %will run 1 epoch in about 200 second and get around 11% error. %With 100 epochs you'll get around 1.2% errorrand('state',0)cnn.layers = { struct('type', 'i') %input layer struct('type', 'c', 'outputmaps', 6, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %sub sampling layer struct('type', 'c', 'outputmaps', 12, 'kernelsize', 5) %convolution layer struct('type', 's', 'scale', 2) %subsampling layer};cnn = cnnsetup(cnn, train_x, train_y);opts.alpha = 1;opts.batchsize = 50;opts.numepochs = 1;cnn = cnntrain(cnn, train_x, train_y, opts);[er, bad] = cnntest(cnn, test_x, test_y);%plot mean squared errorfigure; plot(cnn.rL);assert(er<0.12, 'Too big error');```Example: Neural Networks---------------------```matlabfunction test_example_NNload mnist_uint8;train_x = double(train_x) / 255;test_x = double(test_x) / 255;train_y = double(train_y);test_y = double(test_y);% normalize[train_x, mu, sigma] = zscore(train_x);test_x = normalize(test_x, mu, sigma);%% ex1 vanilla neural netrand('state',0)nn = nnsetup([784 100 10]);opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samples[nn, L] = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.08, 'Too big error');%% ex2 neural net with L2 weight decayrand('state',0)nn = nnsetup([784 100 10]);nn.weightPenaltyL2 = 1e-4; % L2 weight decayopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex3 neural net with dropoutrand('state',0)nn = nnsetup([784 100 10]);nn.dropoutFraction = 0.5; % Dropout fraction opts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex4 neural net with sigmoid activation functionrand('state',0)nn = nnsetup([784 100 10]);nn.activation_function = 'sigm'; % Sigmoid activation functionnn.learningRate = 1; % Sigm require a lower learning rateopts.numepochs = 1; % Number of full sweeps through dataopts.batchsize = 100; % Take a mean gradient step over this many samplesnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex5 plotting functionalityrand('state',0)nn = nnsetup([784 20 10]);opts.numepochs = 5; % Number of full sweeps through datann.output = 'softmax'; % use softmax outputopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, train_x, train_y, opts);[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');%% ex6 neural net with sigmoid activation and plotting of validation and training error% split training data into training and validation datavx = train_x(1:10000,:);tx = train_x(10001:end,:);vy = train_y(1:10000,:);ty = train_y(10001:end,:);rand('state',0)nn = nnsetup([784 20 10]); nn.output = 'softmax'; % use softmax outputopts.numepochs = 5; % Number of full sweeps through dataopts.batchsize = 1000; % Take a mean gradient step over this many samplesopts.plot = 1; % enable plottingnn = nntrain(nn, tx, ty, opts, vx, vy); % nntrain takes validation set as last two arguments (optionally)[er, bad] = nntest(nn, test_x, test_y);assert(er < 0.1, 'Too big error');```[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/rasmusbergpalm/deeplearntoolbox/trend.png)](https://bitdeli.com/free "Bitdeli Badge")

ListView中使用单例添加按钮事件监听

在应用开发中经常会用到ListView,并且每一个Item里面都会有按钮之类的需要进行事件监听的控件。在给按钮添加OnClickListener的时候,一开始很下意识的会想在ListView的adapter的getView方法中找到每个Button并new一个OnClickListener分配给这个button。 但是当数据量很大的时候,new出来这么多个监听器势必会对内存造成一定的压力,而

huwenzhi1991的专栏 813

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Android ListView 之 自定义Adapter 实现列表条目功能,以及 OnItemClickListener(点击事件) OnScrollListener(滑动事件)事件监听

Android ListView 之 自定义Adapter 实现列表条目功能,以及 OnItemClickListener OnScrollListener事件监听 二、实现原理 1、布局文件中增加 ListView 2、准备数据 List 数据 3、构造适配器 Adapter,可以设置自己需要的 Adapter 4、通过 id 找到 ListView 的实例 5、ListView 设置适配器 6、设置监听 ListView 中Item 等相关事件

仙魁XAN 1772

android listview中按钮事件监听问题

当使用listview.setAdapter();中使用simple设置

凡夫俗子 1083

ListView点击item项弹不出toast获取不到事件监听的问题

这时候就可以使用descendantFocusability来解决啦,API描述如下: android:descendantFocusability 该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。 属性的值有三种: beforeDescendants:viewgroup会优先其子类控件而获取到焦点 afterDescendants:viewgroup

qq_33897656的博客 854

android 搜索框 SearchView 监听搜索事件后刷新listview和关闭搜索框事件监听

1.更新数据后刷新listview //搜索框输入和提交事件监听 mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextChange(String queryText) { return true; } @Override public boolean onQueryTextSu

Li_Zhongxin的博客 1647

Android 开发之 LIstView事件监听

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

weixin_33716154的博客 160

给listView添加滚动事件监听

/** * 给listView添加滚动事件监听 */ listView.setOnScrollListener(new OnScrollListener() { boolean atBottom=false; /** * 滚动状态改变时执行 */ public void onScrollStateChanged(AbsListView view, int scro

甄宗伟的博客 1929

Android ListView 事件监听 || 关于ListView选中时显示的效果。

Adapter是用来帮助填充数据的中间桥梁,比如通过它将数据填充到ListView, GridView, Gallery.而android 提供了几种Adapter:ArrayAdapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, S...

lufengdie的专栏 444

ListView添加item的事件监听

1. 点击事件(OnItemClickListener) onItemClick(AdapterView&lt;?&gt; parent, View view, int position, long id)   parent:官方解释为:The AdapterView where the click happened,也就是用户所点击的AdapterView,这个参数一般不用。   vie...

yegshun的博客 1276
下一篇: 一个Android开发者的知识体系
ApiPlayer
博客等级 码龄12年 34粉丝 17原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值