[ Android界面实现 ] ZListView,一个最强大的刷新、加载、滑动删除的 ListView 控件(一)

【Android界面实现】ZListView,一个最强大的刷新、加载、滑动删除的ListView控件(一) 转载请注明出处:http://blog.youkuaiyun.com/zhaokaiqiang1992    两个月之前,写过一篇文章【Android界面实现】整合了刷新、加载更多、滑动删除功能的XListview ,介绍了如何整合两个开源项目实现这种功能,但是在实际的使用中,却出现了一些问题,比如说item的点击事件多次调用,item的position不准确,代码量太大太复杂等,一个哥们在自己的工作中使用了 阅读详情



       两个月之前,写过一篇文章【Android界面实现】整合了刷新、加载更多、滑动删除功能的XListview ,介绍了如何整合两个开源项目实现这种功能,但是在实际的使用中,却出现了一些问题,比如说item的点击事件多次调用,item的position不准确,代码量太大太复杂等,一个哥们在自己的工作中使用了这个项目,这些BUG给他造成了困扰。所以,花费了三天时间看懂项目的基础上,我决定重写这个项目,然后就有了今天的这篇文章,给大家介绍一个更加强大的ListView的使用和实现原理。为了纪念XListView和方便区分,我决定给这个控件取名为ZListVIew。

    另外,这篇文章涉及到的内容较多,请各位看官自备茶水、瓜子,提前做好准备~

    本文将分成两部分进行介绍,前半部分是ZListView的使用介绍,后半部分是实现原理介绍。

 

    ZListView的特点如下:

(1)使用与XListView完全一样

(2)即可以实现刷新、加载功能,也可以关闭,当作普通的ListView使用

(3)支持从四个方向进行侧滑

(4)添加了强大的事件监听,完全掌控各种事件触发过程

(5)修复了之前项目的各种BUG,更加稳定

(6)针对ListView,对滑动Item进行了优化和删减,代码添加注释,更加易懂好用

(7)出现问题随时叫我,强大的后援支持,嘻嘻

 

    一、ZListView使用介绍

    在开始介绍使用之前,先给大家看下运行效果,因为不知道什么原因,我上传的gif都变成静态图了,所以请大家点击这个网址看效果:http://ww4.sinaimg.cn/large/005yyi5Jjw1eo1yrys3a6g30ar0h61kx.gif 

    下面是整个项目的目录结构

 

    BaseSwipeAdapter是一个适配器,如果你的ListView里面需要添加滑动效果的话,就需要继承这个类。

    enums包里面是一些枚举值,比如滑动模式,滑动方向,显示模式等。

    listener包里面是监听器,OnSwipeLayoutListener是用来监听ZSwipeItem的布局改变事件的,而SwipeListener则是监听ZSwipeItem的open、close、startOpen、startClose、update等事件的,但是我们使用的时候,我们仅需要继承SimpleSwipeListener,然后重写里面我们关心的事件即可。

    widget包里面则是核心类,ZListView开头的,是经过修改之后的ListIVew核心类,和XListView的用法完全一样。而ZSwipeItem则是滑动Item的核心类,我们在这里面处理item的各种滑动操作。

    介绍完基本的目录结构,下面就要介绍使用了。

    MainActivity是我们的一个测试Activity,下面是代码

 

[java]  view plain copy
 
  1. public class MainActivity extends Activity {  
  2.   
  3.     protected static final String TAG = "MainActivity";  
  4.   
  5.     private ZListView listView;  
  6.     private Handler handler = new Handler();  
  7.   
  8.     @Override  
  9.     protected void onCreate(Bundle savedInstanceState) {  
  10.         super.onCreate(savedInstanceState);  
  11.         setContentView(R.layout.activity_main);  
  12.   
  13.         listView = (ZListView) findViewById(R.id.listview);  
  14.         listView.setXListViewListener(new IXListViewListener() {  
  15.   
  16.             @Override  
  17.             public void onRefresh() {  
  18.   
  19.                 handler.postDelayed(new Runnable() {  
  20.   
  21.                     @Override  
  22.                     public void run() {  
  23.                         listView.stopRefresh();  
  24.                     }  
  25.                 }, 1000);  
  26.             }  
  27.   
  28.             @Override  
  29.             public void onLoadMore() {  
  30.   
  31.                 handler.postDelayed(new Runnable() {  
  32.   
  33.                     @Override  
  34.                     public void run() {  
  35.                         listView.stopLoadMore();  
  36.                     }  
  37.                 }, 1000);  
  38.   
  39.             }  
  40.         });  
  41.   
  42.         listView.setPullLoadEnable(true);  
  43.         listView.setOnItemClickListener(new OnItemClickListener() {  
  44.   
  45.             @Override  
  46.             public void onItemClick(AdapterView<?> parent, View view,  
  47.                     int position, long id) {  
  48.   
  49.                 Toast.makeText(MainActivity.this, "onItemClick=" + position,  
  50.                         Toast.LENGTH_SHORT).show();  
  51.   
  52.             }  
  53.   
  54.         });  
  55.   
  56.         listView.setOnItemLongClickListener(new OnItemLongClickListener() {  
  57.   
  58.             @Override  
  59.             public boolean onItemLongClick(AdapterView<?> parent, View view,  
  60.                     int position, long id) {  
  61.                 Toast.makeText(MainActivity.this,  
  62.                         "onItemLongClick=" + position, Toast.LENGTH_SHORT)  
  63.                         .show();  
  64.                 return true;  
  65.             }  
  66.         });  
  67.   
  68.         listView.setAdapter(new ListViewAdapter(this));  
  69.   
  70.     }  
  71.   
  72. }  


    从上面可以看出来,和使用XListView是完全一样的,下面是布局文件的代码,和XListView也是完全一样的,就是替换一下控件名称就可以

 

 

[java]  view plain copy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="#f0f0f0" >  
  6.   
  7.     <com.socks.zlistview.widget.ZListView  
  8.         android:id="@+id/listview"  
  9.         android:layout_width="match_parent"  
  10.         android:layout_height="match_parent"  
  11.         android:cacheColorHint="@android:color/transparent" />  
  12.   
  13. </LinearLayout>  


    主要是适配器用起来有一些差别。前面说过,如果我们要实现有侧滑功能的item,就要去继承BaseSwipeAdapter,因此,我们这里就需要这样做。但是在给出适配器的代码之前,我们需要先看一下Item的布局文件的写法,因为这个有强制要求。

 

 

[html]  view plain copy
 
  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="wrap_content" >  
  5.   
  6.     <com.socks.zlistview.widget.ZSwipeItem  
  7.         android:id="@+id/swipe_item"  
  8.         android:layout_width="match_parent"  
  9.         android:layout_height="wrap_content" >  
  10.   
  11.         <LinearLayout  
  12.             android:id="@+id/ll"  
  13.             android:layout_width="180dp"  
  14.             android:layout_height="match_parent"  
  15.             android:background="@android:color/holo_red_light"  
  16.             android:gravity="center" >  
  17.   
  18.             <ImageView  
  19.                 android:layout_width="30dp"  
  20.                 android:layout_height="wrap_content"  
  21.                 android:src="@drawable/trash" />  
  22.         </LinearLayout>  
  23.   
  24.         <LinearLayout  
  25.             android:layout_width="match_parent"  
  26.             android:layout_height="wrap_content"  
  27.             android:background="@drawable/item_selector"  
  28.             android:orientation="vertical"  
  29.             android:padding="15dp" >  
  30.   
  31.             <TextView  
  32.                 android:id="@+id/tv"  
  33.                 android:layout_width="match_parent"  
  34.                 android:layout_height="wrap_content"  
  35.                 android:textColor="@android:color/black"  
  36.                 android:textSize="14sp" />  
  37.         </LinearLayout>  
  38.     </com.socks.zlistview.widget.ZSwipeItem>  
  39.   
  40. </LinearLayout>  


    如果我们需要侧滑功能,那么我们的item里面必须有ZSwipeItem,其实ZSwipeItem是继承的FrameLayout,这点我们在原理讲解阶段会有更加详细的说明。在ZSwipeItem布局的里面,必须有两个ViewGroup布局,第一个ViewGroup里面包裹的就是侧滑之后显示的内容,而第二个ViewGroup则是在前面显示的布局,记住,这两个ViewGroup是必须的!否则会报错哦!

 

    说完item布局文件的写法,下面开始看一下Adapter的代码。

 

[java]  view plain copy
 
  1. public class ListViewAdapter extends BaseSwipeAdapter {  
  2.   
  3.     protected static final String TAG = "ListViewAdapter";  
  4.   
  5.     private Activity context;  
  6.   
  7.     public ListViewAdapter(Activity context) {  
  8.         this.context = context;  
  9.     }  
  10.   
  11.     @Override  
  12.     public int getCount() {  
  13.         return 20;  
  14.     }  
  15.   
  16.     @Override  
  17.     public Object getItem(int position) {  
  18.         return position;  
  19.     }  
  20.   
  21.     @Override  
  22.     public long getItemId(int position) {  
  23.         return position;  
  24.     }  
  25.   
  26.     @Override  
  27.     public int getSwipeLayoutResourceId(int position) {  
  28.         return R.id.swipe_item;  
  29.     }  
  30.   
  31.     @Override  
  32.     public View generateView(int position, ViewGroup parent) {  
  33.         return context.getLayoutInflater().inflate(R.layout.item_listview,  
  34.                 parent, false);  
  35.     }  
  36.   
  37.     @Override  
  38.     public void fillValues(final int position, View convertView) {  
  39.         final ZSwipeItem swipeItem = (ZSwipeItem) convertView  
  40.                 .findViewById(R.id.swipe_item);  
  41.         LinearLayout ll = (LinearLayout) convertView.findViewById(R.id.ll);  
  42.   
  43.         TextView tv = (TextView) convertView.findViewById(R.id.tv);  
  44.         tv.setText(position + "." + " 测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本测试文本");  
  45.   
  46.         if (position % 4 == 1) {  
  47.             swipeItem.setShowMode(ShowMode.PullOut);  
  48.             swipeItem.setDragEdge(DragEdge.Right);  
  49.         } else if (position % 4 == 2) {  
  50.             swipeItem.setShowMode(ShowMode.LayDown);  
  51.             swipeItem.setDragEdge(DragEdge.Right);  
  52.         } else if (position % 4 == 3) {  
  53.             swipeItem.setShowMode(ShowMode.PullOut);  
  54.             swipeItem.setDragEdge(DragEdge.Left);  
  55.         } else if (position % 4 == 0) {  
  56.             swipeItem.setShowMode(ShowMode.LayDown);  
  57.             swipeItem.setDragEdge(DragEdge.Left);  
  58.         }  
  59.   
  60.         swipeItem.addSwipeListener(new SimpleSwipeListener() {  
  61.             @Override  
  62.             public void onOpen(ZSwipeItem layout) {  
  63.                 Log.d(TAG, "打开:" + position);  
  64.             }  
  65.   
  66.             @Override  
  67.             public void onClose(ZSwipeItem layout) {  
  68.                 Log.d(TAG, "关闭:" + position);  
  69.             }  
  70.   
  71.             @Override  
  72.             public void onStartOpen(ZSwipeItem layout) {  
  73.                 Log.d(TAG, "准备打开:" + position);  
  74.             }  
  75.   
  76.             @Override  
  77.             public void onStartClose(ZSwipeItem layout) {  
  78.                 Log.d(TAG, "准备关闭:" + position);  
  79.             }  
  80.   
  81.             @Override  
  82.             public void onHandRelease(ZSwipeItem layout, float xvel, float yvel) {  
  83.                 Log.d(TAG, "手势释放");  
  84.             }  
  85.   
  86.             @Override  
  87.             public void onUpdate(ZSwipeItem layout, int leftOffset,  
  88.                     int topOffset) {  
  89.                 Log.d(TAG, "位置更新");  
  90.             }  
  91.         });  
  92.   
  93.         ll.setOnClickListener(new OnClickListener() {  
  94.   
  95.             @Override  
  96.             public void onClick(View v) {  
  97.                 Toast.makeText(context, "删除:" + position, Toast.LENGTH_SHORT)  
  98.                         .show();  
  99.                 swipeItem.close();  
  100.             }  
  101.         });  
  102.     }  
  103. }  


    首先,我们必须继承BaseSwipeAdapter,不要嫌弃我啰嗦哈,继承之后,有几个特殊的需要我们去实现的方法,下面我们介绍这几个方法的用法:

 

    (1)getSwipeLayoutResourceId(int position)这个方法用来返回position位置的布局文件中ZSwipeItem的id,之所以需要有position,是为了在有多种布局在一起的情况。大多数情况下,我们不需要关心position参数即可。

    (2)generateView(int posiion , ViewGroup parent)在这个方法里面,我们需要完成布局文件资源的加载,就像上面这样用就可以了。

    (3)fillVlues(int position ,View convertIView)这个方法是用来对我们的布局进行数据填充和监听器绑定的,在这里面,你不需要关心convertView是否为null,已经经过实例化了,尽情的调用就可以了。

    (4)swipeItem.setShowMode()是在设置显示模式。显示模式一共有两种,PullOut和LayDown,在ShowMode枚举类型里面定义的。PullOut就是推出模式,侧滑之后,前面的布局会被推出屏外,后面的布局从屏外移动进来,而LayOut则是后面的布局会一点点的显示出来,也就是被遮盖主了。

    (5)swipeItem.setDragEdge()是在设置侧滑动作的接受方向,Right代表从右边往左滑动的时候,后面布局会显示出来,这个也是一个枚举类型,有上下左右四个取值,一般推荐左右,上下和ListView的滑动有冲突,效果不好。

    (6)通过swipeItem.addSwipeListener()可以给滑动item添加各种事件监听,推荐使用SimpleSwipeListener的匿名类,这样就可以只重写自己关心的事件,onOpen和onClose是打开关闭的时候调用,onStartXX则是在动作一开始就调用,因此,如果需要改变后面布局的状态,请在onStartXX的时候调用,onHandRelease()则是在用户手指离开屏幕的时候调用,参数layout是事件发生的ZSwipeItem对象、xvel和yvel则是手势放开瞬间,x和y方向的加速度。onUpdate()在滑动的时候一直会调用,leftOffset和topOffset是距离左上角坐标的距离。

    (7)使用SWipeItem之后,可以和平常一样给后面布局中的控件添加各种事件,比如上面的代码就直接给后面的线性布局添加了点击事件,点击之后就会关闭滑动布局。

 

    使用介绍就先写到这里了,项目大家请到我的github下载,因为实现原理稍微有点复杂,因此,我想分到下一篇中介绍。

ZPL Viewer工具网站 在工作中,我们经常需要设计和预览ZPL(Zebra Programming Language)文件。以前,我一直使用ZPL Design这类工具,但后来我觉得有一个线上工具会更方便。所以,抽空我开发了一个线上ZPL预览工具,希望能帮助到有同样需求的朋友们。希望大家能试用并反馈意见,帮助我们不断改进这个工具。如果你有任何问题或建议,请随时联系我。 阅读详情

相关推荐

ZPLViewer-开源

Zebra 编程语言 II (ZPL II) 是一种标签定义和打印机控制语言。 ZPLViewer 可以解析 ZPL II 代码并向您显示结果标签。

android 刷卡布局,刷卡布局效果-开源AndroidSwipeLayout使用解析(二)

上一篇解析了AndroidSwipeLayout的普通用法这一次我们来看一下它在ListView中的使用,同样我们分析官方的sample来学习如何使用在上一篇忘了给出它的gradle配置同样看分析布局文件listview.xmllistview_item.xml结果这两个布局都非常简单,所以我们就不分析了那我们就进入代码分析环节ListViewExample.javamListView = (Li...

weixin_36082388的博客 379

delphi TRzListView 的用法

delphi TRzListView 的用法,添加 cloumn、item。

优秀开源项目SwipeLayout的使用

今天项目使用了SwipeLayout开源项目,就是像QQ侧滑删除效果的第三方库,支持上下左右划出布局,并支持所有组件!非常强大!在这里写下它的简单使用,当作自己的笔记。 这里用Listview来举例。 首先写布局文件list_item.xml: <com.daimajia.swipe.SwipeLayout xmlns:swipe="http://schemas.andro

Leo_eight的博客 8695

永磁同步电机控制笔记:foc控制原理通俗讲义

引言 到此为止,永磁同步电机控制相关文章已经写了7篇,其中simulink仿真系列文章5篇,控制笔记系列文章2篇,恍惚间感觉少了一篇概论,在此插入一篇,也算是对入坑电机控制一年半来的知识梳理。 文章目录引言一、同步电机是怎么转起来的二、什么样的旋转磁场效率最高三、怎么精准控制旋转磁场的方向四、怎样调节dq轴电流 一、同步电机是怎么转起来的 永磁同步电机结构如下: 外围是定子绕组,中间为永磁体,设...

搞电机的博客 2万+

Win10 / Win11 启用 Hyper-V 虚拟机详细教程(图文+命令行全攻略)

摘要:本文详细介绍Windows10/11系统启用Hyper-V虚拟化平台的方法,包含专业版/企业版的图形界面和PowerShell命令行操作,以及家庭版通过脚本强制启用的特殊方案。内容涵盖版本支持对比、操作步骤图解、常见问题解答和性能优化建议,帮助开发者快速搭建虚拟化环境进行多系统测试。附微软官方文档参考链接和详细操作示意图。

ElioXu 7086

Labelary Online ZPL Viewer

labelary.com/viewer.html

weixin_53203830的博客 656

从零开始:在Ubuntu 22.04上配置Isaac Gym Preview 3环境(含常见错误解决方案)

本文提供了在Ubuntu 22.04系统上从零开始配置Isaac Gym Preview 3环境的完整实战指南。内容涵盖NVIDIA驱动安装、Conda环境搭建、CUDA与PyTorch版本精准匹配、Isaac Gym核心安装与验证,并重点介绍了针对四足机器人等复杂系统的强化学习训练环境配置、常见错误解决方案及性能调优技巧,旨在帮助开发者高效部署这一高性能物理仿真平台。

weixin_29048775的博客 393

ZPL:可视化模版编辑 C# 辅助代码生成工具

ZPL 预览

fanwenhu的专栏 1179

SAP CO实战:如何用KKA2/CJ88结果分析码搞定项目收入成本匹配(附真实案例)

本文深入解析了SAP CO模块中结果分析码KKA2/CJ88的核心应用,通过真实案例详细阐述了如何在成本波动剧烈的销售型项目中,运用结果分析实现收入与成本的精准匹配。文章重点拆解了不同结果分析方法的适用场景与财务影响,并提供了从配置、操作到问题排查的完整实战指南,帮助财务顾问提升项目财务管理能力。

qsc9012345的博客 609

版图提取的spice网表中参数含义及二级效应STI/WPE

寄生电阻、寄生电容可以从版图提出的.sp文件中看, ad area of drain 面积 as area of source pd perimeter of drain 周长,PS PD周长都不计算与栅极接触的部分 ps perimeter of source nrd 漏扩散区等效方块数 nrs 源扩散区等效方块数 sa ...

qq_40007892的博客 6556

【Android界面实现】ZListView,一个最强大的刷新、加载、滑动删除的ListView控件(二)

转载请注明出处:http://blog.youkuaiyun.com/zhaokaiqiang1992 我们接着上篇的文章说,在前一篇文章中,我们学习了ZListView的使用,这一篇就开始说一些干货了,本篇文章将介绍ZListView的实现原理。 其实说是ZListView的实现原理,不如说是ZSwipeItem的实现原理,因为ZSwipeItem才是滑动的关键所在。 ZSwipeItem的滑动,主要是通过ViewDragHelper这个类实现的。在接触这个项目之前,我没听过,也从来碰到过

赵凯强 5957

随机变量序列 收敛 检验 matlab,利用MATLAB验证样条插值的收敛性

问题提出多项式插值是不收敛的,即插值的节点多,效果不一定就好。对样条函数插值又如何呢?理论上证明样条插值的收敛性是比较困难的,但通过本实验可以验证这一理论结果。.实验内容请按一定的规则分别选择等距或者非等距的插值节点,并不断增加插值节点的个数。考虑实验2.1中的函数或选择其他你有兴趣的函数。(中函数)。实验要求(1)随节点个数增加,比较被逼近函数和样条插值函数误差的变化情况。分析所得结果并与拉格朗...

weixin_30895121的博客 4736

android列表标题置顶功能,Android实现QQ侧滑(删除、置顶等)功能

实现类似QQ滑动出现可操作项的功能,在网上看到有人自定义LinearLayout实现这个效果,但是灵活性有限。此demo使用开源项目SwipeLayout实现该功能。关于SwipeLayout的常用设置和属性,这里都做介绍,下面进入正题。一、效果图二、代码片段主页布局和主页的Java代码都和平时使用没有区别,代码没必要贴出来了。这里使用的ListView演示,还可以是GridView,Expand...

weixin_29435115的博客 412

ROS机器人未知环境自主探索功能包explore_lite最全源码详细解析(一)

本系列文章主要针对ROS机器人常使用的未知环境自主探索功能包explore_lite展开全源码的详细解析,并进行概括总结。 本系列文章共包含六篇文章,前五篇文章主要介绍explore_lite功能包中 explore.cpp、costmap_tools.h、frontier_search.cpp、costmap_client.cpp等源码实现文件中全部函数的详细介绍,第六篇文章进行概括总结,包含自主探索功能包explore_lite的简介,实现未知环境自主探索功能的原理及流程总结,效果演示,使用功能包

慕羽★的博客 3939

华为数通方向HCIP-DataCom H12-831题库(多选题:121-140)

华为数通HCIP H12-831多选题

didiplus 1291

zebra printer online ZPL viewer

http://labelary.com/viewer.html

诸葛建站 546

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

【亲测免费】 ZPL标签设计器教程

ZPL标签设计器教程 项目介绍 ZPL标签设计器是一个开源项目,旨在帮助用户通过图形界面设计ZPL(Zebra Programming Language)标签。ZPL是一种广泛用于条码打印机的编程语言。该项目提供了一个用户友好的界面,使用户能够轻松创建和编辑ZPL标签,而无需深入了解ZPL语法。 项目快速启动 安装 首先,克隆项目仓库到本地: git clone https://github.co...

gitblog_00271的博客 1030

jre9下载 jdk9

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

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

H5+ zebra打印机(ZPL指令)打印标签

功能:扫描周围蓝牙设备加入列表,点击未配对设备,自动配对设备,点击已配对设备,进行打印测试。公司新增一台打印机需求,与之前的打印机指令不一致,需要用到斑马的ZPL指令。之前的打印机由前同事开发,用到的是JPL的打印机,封装的jar包。本次参考了网上的教程,结合之前打印机获取蓝牙设备。打印机:Zebra 斑马打印机 ZD421。手机:PDA - C500 (安卓12)

oliverQuill的博客 2027

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

【Android界面实现】整合了刷新、加载更多、滑动删除功能的XListview

转载请说明出处:http://blog.youkuaiyun.com/bz419927089     如果想做带有刷新、加载更多功能的listv

赵凯强 1万+

androidSwipeLayout简单用法,仿qq会话列表listview左右滑动

1.概述 AndroidSwipeLayout,开发者是代码家, AndroidSwipeLayout 是一个支持ListView, GridView, ViewGroup等等左右上下滑动出操作菜单, 类似 qq 消息列表向左滑动显示出多某条信息的操作菜单 2.配置 在模块中添加: compile 'com.daimajia.swipelayout:library:1.2.0' 如果自己

菜鸟的android晋级之路 4671

swipelayout的基本使用

swipelayout的使用方法

2987

android 侧滑删除 第三方库,非常实用的侧滑删除控件SwipeLayout

前言:项目中经常会用到类似于QQ侧滑点击删除的效果,网上的开源库也很多。个人感觉SwipeLayout最好用。下面介绍怎么使用。一、首先导入需要的Jar包,有3个,AndroidSwipeLayout-v1.1.8.jar、AndroidViewAnimations-1.1.3.jar、nineoldandroids-2.4.0.jar。第一个jar包就是我们使用该控件的jar包,后面2个是侧滑出...

weixin_32807673的博客 394

SwipeLayout侧滑

SwipeLayout框架实现侧拉删除编辑第一步:添加依赖dependencies { compile 'com.android.support:recyclerview-v7:21.0.0' compile 'com.android.support:support-v4:20.+' compile "com.daimajia.swipelayout:library:1.2.

chenlxhf的博客 2176

SwipeLayout在ListView中使用的使用的问题

在ListView中使用SwipeLayout时,SwipeLayout在BaseSwipeAdapter暴露了两个方法:public View generateView(nt position, ViewGroup parent) public void fillValues(int position, View convertView) 一般来说,实现这两个方法就可以了。 遇到的问题: 1.

来啊 快活啊 3352
上一篇: Picasso:一个强大的图片下载和缓存库
下一篇: 【Android界面实现】ZListView,一个最强大的刷新、加载、滑动删除的ListView控件(二)
codepython
博客等级 码龄20年 125粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值