上一篇解析了AndroidSwipeLayout的普通用法

这一次我们来看一下它在ListView中的使用,同样我们分析官方的sample来学习如何使用

在上一篇忘了给出它的gradle配置

同样看分析布局文件

listview.xml

listview_item.xml

结果这两个布局都非常简单,所以我们就不分析了

那我们就进入代码分析环节

ListViewExample.java

mListView = (ListView) findViewById(R.id.listview);

mAdapter = new ListViewAdapter(this);

这两句进行初始化,ListView,ListViewAdapter(ListViewAdapter我们下面详细解析)

mAdapter.setMode(Attributes.Mode.Single);

这句代码是设置Adapter的模式,Attributes.Mode.Single代表只有一个拖拽打开的时候,其他的关闭,在例子apk中可以体验出

mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

@Override public void onItemClick(AdapterView> parent,

View view,

int position,

long id) {

((SwipeLayout)(mListView

.getChildAt(position-mListView

.getFirstVisiblePosition())))

.open(true);}});

设置listview的itemclick监听,当点击的时候,打开swipeLaout

mListView.setOnTouchListener(

new View.OnTouchListener() {

@Override public boolean onTouch(View v, MotionEvent event{

Log.e("ListView", "OnTouch");

System.out.println("OnTouch");

return false;

}});

设置listview的touch监听

mListView.setOnItemLongClickListener(

new AdapterView.OnItemLongClickListener() {

@Override public boolean onItemLongClick(

AdapterView> parent,

View view,

int position,

long id) {

System.out.println("OnItemLongClickListener");

return true; }});

设置ListView的OnItemLongClick的监听

mListView.setOnScrollListener(

new AbsListView.OnScrollListener() {

@Override public void onScrollStateChanged(

AbsListView view,

int scrollState) {

Log.e("ListView", "onScrollStateChanged");

System.out.println("onScrollStateChanged"); }

@Override public void onScroll(AbsListView view,

int firstVisibleItem,

int visibleItemCount,

int totalItemCount) {

System.out.println("onScroll"); }});

设置ListView的OnItemSelected监听

mListView.setOnItemSelectedListener(

new AdapterView.OnItemSelectedListener() {

@Override

public void onItemSelected(AdapterView> parent, View view, int position, long id) {

Log.e("ListView", "onItemSelected:" + position);

System.out.println("onItemSelected " + position); }

@Override

public void onNothingSelected(AdapterView> parent) {

Log.e("ListView", "onNothingSelected:");

System.out.println("onNothingSelected: "); }});

然后分析ListViewAdapter

~~发现ListViewAdapter继承自BaseSwipeAdapter,

BaseSwipeAdapter继承自BaseAdapter

BaseSwipeAdapter是一个抽象类,子类需要实现

getSwipeLayoutResourceId,generateView,fillValues,getCount, getItem,getItemId函数

*getCount,getItem,getItemId函数实现和BaseAdapter中一样

*getSwipeLayoutResourced需要返回一个Swipelayout的id,便于对其的处理

generateView函数用于生成一个View,和BaseAdapter的getView的用法基本一样,不同的是在这里可以不处理view的复用,因为BaseSwipeAdapter中已经封装了view的复用处理

*fillValues在这个函数中填充数据

下面看例子中的ListViewAdapter的实现

@Override

public int getSwipeLayoutResourceId(int position) { return R.id.swipe;}

返回的是ListView_item.xml中的swipelayout的id

个人感觉简书的markdown太难用了,贴代码不方便直接上图了

Paste_Image.png

Paste_Image.png

ok,listView使用AndroidSwipeLayout结束,下次分析RecyclerViewr使用它

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

  1. 关于HCE——Android手机NFC模拟刷卡成果和心得(上)

    关于HCE--Android手机NFC模拟刷卡成果和心得 一.前言 在最近,开始研究了手机模拟NFC刷卡的一些内容,想是自己实现一次手机模拟刷卡. NFC大家应该都了解,这两年的安卓手机基本都是支持了 ...

  2. Android app性能优化解决卡慢顿之布局优化

    前面博客分析了导致app卡顿慢的直接原因,这里就从原因出发,分析一些优化方案(这里主要是从直接影响渲染机制的布局相关进行分析) 1) Invalidations, Layouts, and Perfo ...

  3. Android 学习之《第一行代码》第二版 笔记(二十三)Material Design 实战 —— 卡片式布局

    实现基础: Android 学习之<第一行代码>第二版 笔记(二十二)Material Design 实战 -- 悬浮按钮和可交互提示 卡片式布局 卡片式布局是 Materials Des ...

  4. android手机——刷机(卡刷、线刷)

    刷机是许多android手机都要经历的一环: 卡刷 症状:刷机后可以开机但无法进入系统,一直停在加载界面 这种情况称为"半砖",还不算太糟,可用卡刷法复活,即把我们要刷的rom包放 ...

  5. android手机公交卡,哪些手机可以刷公交卡 支持刷公交卡手机有哪些【详细介绍】...

    想要使用"手机刷公交卡乘坐公交.地铁",首先你必须拥有一部具备NFC模块的智能手机,其次公交车上要有支持闪付的刷卡器,然后再前往运营商营业厅更换一张"把公交IC卡和SIM ...

  6. android怎么添加地铁卡,安卓手机公交卡怎么刷

    安卓手机还能刷公交?安卓手机新推出的功能可以当公交卡用?是不是很新颖?有兴趣的朋友可以来了解一下. 12月19日,三星SAMSUNG Pay终于支持的公交卡功能,首批开通城市仅限北京上海,而此前小米M ...

  7. android 开发刷rom,Android ROM开发(7) TF卡(金卡)自引导刷机

    Andrew Huang 转载请注明作者及网址 官方的RUU对于刷机要求严格.必须使用PC通过USB在线刷机,检查也比较严格.如果想刷CID不一致的ROM,或者降版刷机.用这个方法不行. 因此如果你的 ...

  8. 三星s5刷机android+l,三星s5刷机教程与方法(卡刷第三方包)

    三星s5的刷机教程也来了,这个刷机教程和之前的线刷教程不一样,因为这次刷机是采用卡刷方式,也就是采用第三方的recovery来给手机刷入一个第三方的zip包就可以了,操作上也是非常的简单,虽说是简单, ...

  9. oppoA83怎么升级android版本,OPPO A83 刷机教程 OPPO A83 卡刷升级教程

    刷机升级之前,请备份好手机上的数据资料,可使用手机自带的"备份与恢复"软件进行备份. 备份完成后,请按照以下步骤操作: 1.下载手机升级固件包,选择对应的机型ROM下载.或从OPP ...

最新文章

  1. OCR光学字符识别方法汇总(附开源代码)
  2. Angular ngClick command parse
  3. 垃圾收集算法,垃圾收集器_您正在使用什么垃圾收集器?
  4. 北航 2012 秋季 现代软件工程 团队项目要求
  5. kodi刮削器 中文_教你PLEX插件播放4K不能使用KODI解码导致卡顿的解决办法
  6. 高斯主元素消去法c语言,列主元Gauss消去法(C++实现)
  7. 《学习OpenCV3》第4章 图像和大型数组类型(持续更新)
  8. 超简单的Matlab附加功能安装包的安装方法
  9. oa系统服务器数据库,oa数据库和服务器
  10. 产品 电信nb接口调用_NB-IOT开发流程---基于中国电信物联网平台实现平台对接
  11. ts文件怎么合并转换成mp4?
  12. u2000网管服务器系统安装,U2000网管预安装后无法登陆
  13. KYLO的 Java 基础知识点总结(其一)
  14. excel双击后公式计算机,#电脑上的excel表格里的数字为什么要双击才能展开#excel文本双击后变数字...
  15. 小宝挪车自研第二代挪车通知技术,保护隐私无死角!
  16. 电脑版微信定时发送消息
  17. 人工智能导论(数据挖掘)
  18. 哺乳期这几种还真的要少吃,不能吃的食物真有那么多?
  19. JavaWeb项目中出现No converter found for return value of type的解决方法
  20. MKS Robin Nano V3.0使用说明书

热门文章

  1. c1083 “tensorflow/python/framework/c pp_shape_inference.pb.h”
  2. Windows下VS2015 MPI编译64位Boost1.64
  3. keras系列︱keras是如何指定显卡且限制显存用量
  4. tuple parameter unpacking is not supported in python3
  5. map/set iterator not dereferencable
  6. c++多线程队列 类对象
  7. Cissp-【第1章 安全和风险管理】-2020-12-07(32页-58页)
  8. php实现tcp连接esp8266,ESP8266之TCP透传
  9. java二叉排序树动态查找表_9.3.1动态查找表—二叉排序树
  10. c++ vector 存放指针_STL-C++ vector部分