看图,在这个页面中,包含了以下几个要点:
recycleview 的下拉刷新
recycleview 的右移动画
Activity 和 Fragment 积极通信
单选、多选、全选删除动作
litepal 增删改查
你有没有注意到,在上个页面,我们的右下角有个浮动按钮,点击是这样的效果:
噢,是将这个订单标记为已签收或者未签收状态,所以,我们还用到了数据库。
头大,但是也得看下去!
首先,我们有这样一个model:
public class OrderInfoLitePal extends DataSupport { int id; String nu; String com; String state; String time; boolean isselect; public int getId() { return id; } public void setId(int id) { this.id = id; } ............................1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
isselect 字段的目的是为了解决 checkbox 状态错乱的问题。
extends DataSupport 是 litepal 所需,id 是每条数据的 Id,后面会方便删除。
1. 先来看下拉刷新:
下拉刷新我们用到了这个库 pullrefreshlayout
用法如下:
swipeRefreshLayoutOrderall.setOnRefreshListener(new PullRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { swipeRefreshLayoutOrderall.post(new Runnable() { @Override public void run() { QueryData(); notifydata(); swipeRefreshLayoutOrderall.setRefreshing(false); } }); } });1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
2. 衔接上,下面是数据库查询操作 :
使用 findAll 方法查一遍数据库,更新 list,再刷新视图即可。
/** * 避免调用notify失败 */ public void QueryData() { list.clear(); List<OrderInfoLitePal> lists=new ArrayList<OrderInfoLitePal>(); lists= DataSupport.findAll(OrderInfoLitePal.class); list.addAll(lists); }1
2
3
4
5
6
7
8
9
1
2
3
4
5
6
7
8
9
为了避免调用 notifyDataSetChanged 失败,采用上面的办法。
lists= DataSupport.findAll(OrderInfoLitePal.class);1
1
这句代码即为查询数据库中 表名为 OrderInfoLitePal 的所有数据。