首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

listview滑动删除

今天还是给大家带来自定义控件的编写,自定义一个ListView的左右滑动删除Item的效果,这个效果之前已经实现过了,有兴趣的可以看下Android 使用Scroller实现绚丽的ListView左右滑动删除...,我们要使得Item跟随手指的滑动而滑动 当我们抬起手指的时候,我们根据滑动的距离或者手指在屏幕上面的速度来判断Item是滑出屏幕还是滑动至其实位置 Item滑出屏幕时,使ListView的其他item...的左右滑动删除item的效果啦,但是还有一个效果,item删除之后,ListView的其他item向上或者向下缓缓滑动的效果,实现这个也很容易,就是动态设置item的高度,item高度逐渐变小,这样其他的...移动出了屏幕,并且将item的高度设置为了0,并没有将item的View从ListView中Remove掉,况且ListView也不能直接Remove掉Item的,只能将数据源删除,在调用notifyDataSetChanged...()刷新,所以我们需要将刚刚滑出屏幕高度设置为0的Item恢复回来 自定义控件的代码我们已经编写完了,接下来我们就要使用它了,先看界面的布局代码 <RelativeLayout xmlns:android

1.8K70

Android ListView那些事

这个机制简单地说来就是ListView把可见的child绘制在一个bitmap上面(系统将每一个child拷贝到由cache color hint填充的bitmap上面),然后再直接把这个bitmap绘制到屏幕上...由于通过情况下,listview的item的背景是透明的,所以,当用户按下一个item时,黄色的selector就会透出来。...OnItemClickListener不触发 有时候,当ListView中的每一个item是自定义的View时,有可能会导致ListView的OnItemClickListener的listener...无法调用,请看如下情况: 如果你的自定义ListViewItem中有Button或者Checkable的子类控件的话,那么默认focus是交给了子控件,而 ListView的Item能被选中的基础是它能获取...Focus的权限,不需要针对Item Layout中的每一个控件重新设置focusable属性了,如此就可以顺利的响应onItemClickListener中的onItemClick()方法了。

45620
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    ListView详细介绍与使用

    假如当屏幕一次可以显示 x 个 item 时(不用是完整的),那么 ListView 会创建 x+1 个视图;当第1个 item 离开屏幕的时候,此时这个 item 的 View 就会被回收,再入屏的...只有 item 完全离开屏幕后才会复用,这也是为什么 ListView 要创建比屏幕需要显示视图多 1 个的原因:缓冲显示视图。...实例演示: 假如屏幕一次只能显示 5 个 item,那么 ListView 会创建 (5+1)个 item 视图;当第 1 个 item 完全离开屏幕后才会回收至缓存,从而复用。...BaseAdapter:这个是我们在实际开发中经常用到的,我们需要继承 BaseAdapter 来自定义我们自己的适配器 常用适配器介绍与使用 ArrayAdapter 特定:使用简单、用于将数组、List...实现步骤 在布局中添加 ListView 实现 item 布局(根据 ui 设计的) 创建数据源 创建自己的 Adapter 类 继承 BaseAdapter 创建自定义的 Adapter 类对象 将创建的适配器绑定到

    1.5K20

    一种统计ListView滚动距离的方案

    1 背景 ListView在屏幕上会固定一定长度,如果内容超过这个长度,一般是通过滑动来向下浏览更多的内容。此时有产品就想统计出用户在某一次浏览中是否有滑动,并且想实际量化该滑动距离。...item的高度来判断当前滚动了多少距离,大方案只能统计滚动刚好超过item时滚动距离,但如果滚动未超过一个item时,其滚动距离则不能累加item的高度来处理,比如: 实际滚动距离为红色部分,并没有超过一个...item的高度,此时应该怎样统计该部分的距离呢?...这肯定没有办法直接通过item的高度来计算得到。...而 橙色部分高度 + 红色部分高度 = 该item的实际高度,进而我们可以通过item的高度 - 橙色部分高度来得到红色部分的高度: //进来时,记录下该item的初始top mInitTop = item1View.getTop

    1.2K20

    腾讯开源超实用的UI轮子库,我是轮子搬运工

    功能列表 QMUIAnimationListView 使 ListView 支持添加/删除 Item 的动画,支持自定义动画效果。...在 item 右侧显示一个开关或箭头或自定义的View QMUIDialog 提供了一系列常用的对话框,解决了使用系统默认对话框时在不同 Android 版本上的表现不一致的问题。...QMUIItemViewsAdapter 一个带 cache 功能的“列表型数据-View”的适配器,适用于自定义 View 需要显示重复单元 ListView 的情景,cache 功能主要是保证在需要多次刷新数据或布局的情况下...QMUIWrapContentListView 支持高度值为 wrap_content 的 ListView,解决原生 ListView 在设置高度为 wrap_content 时高度计算错误的 bug...获取屏幕信息,包括屏幕密度、屏幕宽度和高度、状态栏高度、ActionBar 高度等。

    4.8K30

    Flutter如何设计一个高性能,多功能的ListView组件

    关注我,获取我的最新文章~ 导语: 实战篇: 1、Flutter如何设计一个高性能,多功能的ListView组件 2、如何解决特定场景下ListView中存在的性能问题 3、开源!!!!...当前,我们往往会在item的build函数或者initState中进行,但由于ListView的预加载和垃圾回收机制,一些未出现在屏幕上的会被提前曝光。...2、缓存每个item的高度,指定滚动index的时候去计算需要滚动的offset 。...根据偏移量和窗口的高度我们可以得到 可视范围的起点和终点,再基于item的高度缓存信息,便可计算出当前屏幕上的item。...有了消息的发送者必然需要在这个结构中插入接受者,这里我参考了PageView的实现,选择嵌套到ListView中收集尺寸信息,将这个信息传递给自定义的ScrollController,由他实现指定index

    20710

    HarmonyOS组件开发 ScrollView嵌套ListContainer 滑动冲突问题

    二、这时第二个思路也成型了,因为ScrollView的高度是根据它内部的组件的高度变化的,当内部的组件高度大于手机屏幕的高度时会出现ScrollView的滚动,反之不会出现。...那么就只能从ScrollView的高度入手了,要改变ScrollView的高度就必须去改变它内部组件的高度,那么问题来了ScrollView嵌套ListContainer,ListContainer的高度最大只能到屏幕大小或者是固定于屏幕内部...思路到这里也就清晰了,ListContainer的高度大于原始设置的高度时会发生滑动,ScrollView在内部组件高度大于手机屏幕时才会滑动。...随即ListContainer的高度如果大于了屏幕的高度ScrollView就会滑动。 OK,问题找到了,解决ListContainer的动态高度就解决的滑动冲突。...这里就粘一下图 思路没有变,将每次listview的Item高度相加作为listview的整体高度,listview的高度就是动态的变化,listview的高度会根据数据的增加而变化。

    93820

    UITableView在Flutter中是什么?

    如下所示,我定义了一组不同颜色背景的组件,将他们的宽度设置为140,并包在了水平布局的ListView中,让它们可以横向滚动: ListView( itemExtent: 140,//item...因为如果这个参数为null,ListView会动态地根据子Widget创建完成的结果,决定自身的视图高度,以及子Widget在ListView中的相对位置。...如下所示,我针对 index 为偶数的场景, 创建了绿色的分割线,而针对 index 为奇数的场景,创建了红色的分割线: ListView.separated( itemCount: 66...在Flutter中,有一个专门的控件CustomScrollView,用来处理多个需要自定义滚动效果的Widget。...ListView组件,同时支持垂直方向和水平方向滚动,不仅提供了少量一次性创建子视图的默认构造方法,也提供了大量按需创建子视图的ListView.builder机制,并且支持自定义分割线。

    5.6K10

    ListView的相关总结

    UI, 再把 item 返回给 ListView就可以。...//这里生成一个新的 Item return convertView; 就会发现在滑动列表的时候会出现已经离开屏幕的那些 item。...ListView的优化 通常在 Android初级的面试中会涉及到这个问题, 就是如何优化 ListView, 一般由浅到深的思路是这样的, · 复用 convertView · 自定义 ViewHolder...用 RecyclerView 替代 ListView ListView的局限 其实 ListView的局限很明显, 最简单的是它不能提前渲染 item, 这就造成当我们尝试用异步的方式来延迟渲染的时候有可能会让...原因很简单, 每个 item可能高度不一样, 在延迟渲染完成后高度发生了变化,这就导致整个UI发生跳动, 这样的问题在一些复杂的场景下很难解决, 所以最简单直接的办法是。。。

    40620

    Android RecyclerView 使用完全解析 体验艺术般的控件

    可以看出其高度的解耦,给予你充分的定制自由(所以你才可以轻松的通过这个控件实现ListView,GirdView,瀑布流等效果)。...其实你什么都不用做,只要使用StaggeredGridLayoutManager我们就已经实现了,只是上面的item布局我们使用了固定的高度,下面我们仅仅在适配器的onBindViewHolder方法中为我们的...item设置个随机的高度(代码就不贴了,最后会给出源码下载地址),看看效果图: ?...可以看到RecyclerView可以实现: ListView的功能 GridView的功能 横向ListView的功能,参考Android 自定义RecyclerView 实现真正的Gallery效果...通过简单改变下LayoutManager,就可以产生不同的效果,那么我们可以根据手机屏幕的宽度去动态设置LayoutManager,屏幕宽度一般的,显示为ListView;宽度稍大的显示两列的GridView

    1.6K10

    【Android从零单排系列二十】《Android视图控件——ListView》

    功能:ListView可以在有限的屏幕空间内显示大量的数据,并支持用户滚动浏览。它提供了一个可滚动的列表容器,可以逐项地展示数据元素。...可以根据需求,自定义每个列表项的外观和内容,包括添加图片、文字、按钮等。...android:layout_height:指定ListView的高度,可以使用具体数值(如"match_parent"、"wrap_content")或者具体数值。...android:dividerHeight:设置列表项之间的分割线高度,可以使用具体数值和单位(如"dp")。...它通过设置键值对的映射关系,将数据项的特定字段显示在列表项的指定位置。 BaseAdapter:BaseAdapter是一个抽象类,用于自定义适配器。

    62310

    Android--ListView复用机制源码分析

    ListView是谷歌官方的一个自定义组件,用于列表展示,其中最重要的是Adapter设配器,设配器模式的设计为它带来了极大的性能提升,一方面,内存中只有我们看的到的ItemView被创建(对比ScrollView...:有多少子控件就内存中创建多少子控件),另一方面,对ItemView缓存,以便滑动时复用 既然ListView是自定义组件,我们首先找到它的Measure方法 protected void onMeasure...,ListView只能显示一个item的原因,另外如果ListView的高度设置是wrap_content时,将调用measureHeightOfChildren方法,并且第三个参数是NO_POSITION...的高(wrap_content下),如果所有item的高度之和小于测量建议值,则使用item的高度之和,反之,用建议值。...只加载在屏幕上的item,我们再来到makeAndAddView方法 private View makeAndAddView(int position, int y, boolean flow,

    53310

    RecyclerView 自定义ItemDecoration从入门到实现吸顶效果

    强大很多,但很恼人的是它没有像ListView一样默认提供分割线。...所以代码是是这样的: ? 再次运行代码item被挡住的问题就解决了,RecyclerView的自定义ItemDecoration就是这么简单.有点自定义View经验的人理解起来都不会难 ?...因为是吸顶效果,所以分割线和传统的分割线一样应该是在每个item的上方而不是下方 当前屏幕可见的第一个item的Bottomitem_height(分割线的高度) 说明可见的第一个item的底部已经超出了分割线的高度...判断当前屏幕的第一个可见的item是哪个 把当前屏幕可见的item进行对比,如果item的内容第一个字相同,则把它们归为一组,用一条分割线显示即可. 先来实现1和2的要求,主要代码部分如下: ?...接着来实现实现: 当前屏幕可见的第一个item的Bottomitem_height(分割线的高度)让第一条分割线随着RecyclerView向上滑动直到滑出屏幕,代码如下: ?

    1.3K10

    Android开发的那些坑和小技巧

    但如果在列表如ListView中,用错了问题就大了。ListView中的getView方法需要计算列表条目,那就必然需要确定ListView的高度,onMesure才能做测量。...4、ListView中item点击事件无响应 listView的Item点击事件突然无响应,问题一般是在listView中加入了button、checkbox等控件后出现的。这个问题是聚焦冲突造成的。...在android里面,点击屏幕之后,点击事件会根据你的布局来进行分配的,当你的listView里面增加了button之后,点击事件第一优先分配给你listView里面的button。...所以你的点击Item就失效了,这个时候你就要根据你的需求,是给你的item的最外层layout设置点击事件,还是给你的某个布局元素添加点击事件了。...需要解决ListView放到ScrollView中的滑动问题和RecyclerView的显示问题(如果RecyclerView的高度没法计算,你是看不到内容的)。

    1.1K30

    android学习笔记----ListView和各种适配器简介

    但如果是RecyclerView则不一样,指定的高度就按指定的高度来。 第三个参数为false表示暂时不要附属到父ListView,以方便下一步操作,比如设置控件的属性。...重复使用它们,ListView 将请求列表中特定位置的视图,同时传入之前用过的视图。...TextView setText() 方法来更改名字,这样我们可以向 ListView 返回全新的列表项以便添加到新的层级并显示到屏幕上。...并且知道如何将每项呈现为视图,与此同时 ListView 负责在屏幕上显示这些视图,检测用户的触摸手势,并跟踪用户是否位于整个列表中。  ...>(this, R.layout.item1, R.id.tv_name, objects); // 适合自定义布局   lv.setAdapter(adapter); 这三行代码总结了ListView

    2.2K10

    【Flutter 专题】58 图解 Flutter 嵌入原生 AndroidView 小尝试

    Flutter 端 创建 AndroidView 并设置与原生相同的 viewType; return ListView(children: [ Container(child...相关小结 和尚对比两个 Container 高度,Container 尺寸大于 AndroidView 对应的原生 View 尺寸时,完全展示;相反小于时则会裁剪 AndroidView 对应的原生 View...TextView 进行尝试;PlatformViewFactory 基本一致,只是更换初始化和注册的 N…TextView 即可;自定义 N…TextView 需实现各自的 Channel 方式; MethodChannel...4. gestureRecognizers 针对不同的 View 需要的手势有所不同,上述 TextView 没有设置手势集合,默认支持点击,但对于 ListView 之类的需要滑动手势或长按点击的话则需要添加...和尚在测试时,NMethodListView 设置高度超过剩余空间高度,例 Container 高度设置 500.0 可实际屏幕剩余高度只有 300.0,因 transparent 不会透传,所以 Flutter

    2.2K41

    可拖拽gridview

    在Android开发中,我们常常用到ListView和GridView,而有的时候系统的ListView,GridView并不能满足我们的需求,所以我们需要自己定义一个ListView或者GridView...,我的上一篇文章中就是自定义的一个左右滑动删除item的例子,大家有兴趣的可以去看看 Android 使用Scroller实现绚丽的ListView左右滑动删除Item效果,今天这篇文章就给大家来自定义...item 如果我们长按了item则隐藏item,然后使用WindowManager来添加一个item的镜像在屏幕用来代替刚刚隐藏的item 当我们手指在屏幕移动的时候,更新item镜像的位置,然后在根据我们移动的...X,Y的坐标来获取移动到GridView的哪一个位置 到GridView的item过多的时候,可能一屏幕显示不完,我们手指拖动item镜像到屏幕下方,要触发GridView想上滚动,同理,当我们手指拖动...的上边缘到屏幕上边缘的距离,如上图的3号线,这个距离包裹状态栏,标题栏,或者一些在DragGridView上面的布局的高度,这个很重要我们现实Item镜像需要用到 mOffset2Left DragGridView

    4.9K50
    领券