android lis分组拖拽,App列表之拖拽ListView(上)

研究了很久的拖拽ListView的实现,受益良多,特此与尔共飨。

鉴于这部分内容网上的资料少而简陋,而具体的实现过程或许对大家才有帮助,为了详尽而不失真,我们一步一步分析,分成两篇文章。

一、准备。

1.需求问题

初步:实现列表的拖拽效果(可参考拓展:借鉴上一篇文章Android学习系列(9)--App列表之分组ListView,实现分组列表的拖拽效果。

下面以初步实现为例子,逐步展开实现步骤。

2.搭建主界面DragListActivity.java和主布局drag_list_activity.xml。

?

3.列表项的布局drag_list_item.xml。

?

4.准备样本数据。

我已经准备好了两组数据,在前面提到的initData()方法中执行初始化。

?

这里定义了分组标签集合groupKey后面分组的时候会用到。

5.自定义适配器类DragListAdapter。

接着我们搭建数据适配器,负责把list的数据填充到ListView中。

?

注意getItem(position)会取得数组适配器中position位置的T(这里是字符串),比较好用的一个方法。

至此,我们准备了一个正常的数据列表,效果如下:

06d63f33b1a77499a39459bf65865f0e.png

二、实现

上面部分是我们的一个 准备工作,接下来我们通过自定义ListView,重写ListView中onInterceptTouchEvent(),onTouchEvent()方法来响应触控事件做相应的界面调整(选中,拖动,数据更改后刷新界面)等等。

6.自定义视图类。

?

7.重写触控拦截事件方法onInterceptTouchEvent()。

为了能在子控件响应触摸事件的情况下此ListView也能监听到触摸事件,我们把重写这个方法,做一些初始化工作。我们在这里捕获down事件,在down事件中,我们做一些拖动的准备工作:

1)获取点击数据项,初始化一些变量;

2)判断是否是拖动还是仅仅点击;

3)如果是拖动,建立拖动影像;

这些工作是我们后面拖动的一个执行基础,非常重要。

?      看到上面的一大堆变量和操作,你可能有些眼花缭乱,在后面使用的时候回头再去理解也可。

开始拖动影像startDrag()方法:

?       stopDrag()方法如下:

?        运行看看,我们点击一项的时候没有什么反应,但是细心观察的话,其实点击项上有一层淡淡的重影,这就是我们定义的点击项的影像,后面要做的就是拖动这个影像,放下影像以及放下位置的数据项插入和原数据项位置的删除,这部分内容以及后续扩展的内容我们放到下篇中继续分析并实现。

0b1331709591d260c1c78e86d0c51c18.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值