因为是全部订单,所以使用 findAll 。
如果是已签收订单(state为3代表已签收,其余状态各有意思): 则为:
1
1
如果是未签收(state不等于3则为未签收),则为:
lists=DataSupport.where("state!=?","3").find(OrderInfoLitePal.class);1
1
3个页面非业务功能一致,所有这儿只说所有订单页面。
3. 使用 EventBus 进行通信:
因为我们的结构是下面这样的:
toolbar 位于 MainActivity 上,如果点击 toolbar ,需要 AllOrderFragment做出动作,很明显我们需要使用 EventBus,并且还需要定制我们的 Event。
如果在上图中加上 EventBus ,则变成这样:
在 AllOrder 中我们接受一个 OrderEvent,如下:
public class OrderEvent extends Event { public int position; public String from; public boolean needclose; public boolean needselect; public OrderEvent(boolean needclose,boolean needselect, String from, int position, Object source) { super(source); this.needclose=needclose; this.needselect=needselect; this.from=from; this.position=position; }1
2
3
4
5
6
7
8
9
10
11
12
13
14
1
2
3
4
5
6
7
8
9
10
11
12
13
14
position 表示是哪个 fragment 。
from 代表这条消息来自哪儿。
needclose 代表 Recycleview 的 Item 右移动画是否需要关闭。
needselet 代表 checkbox 是否需要被选择。
在 OnEvent 方法中 总共接受4种类型的消息
第一种消息来自 MainActivity,代表点击了 toolbar 上面的 编辑/取消 按钮。
第二种消息来自 FragmentSecond,表示当切换 fragment 时,关闭上个 fragment 的右移动画 ,并且置select 字段 false。
第三种消息来自 MainActivity,表示点击了 全选/取消全选 按钮,并且置 select 字段 true/false。
第四种消息来自 MainActivity,表示因为底部 fragment 切换需要关闭 item 的右移动画,并且置 select 字段false;
比如说,我们点击了全选按钮:
case R.id.toolbar_sub2title: if ("全选".equals(getSub2Title().getText().toString())) { getSub2Title().setText("取消全选"); // To:FragmentOrder_***.onEvent() // false:不需要关闭动画 // true: 需要选择 // MainActivity_Allselect: 发送自 MainActivity // 参数-1无意义 EventBusUtil.postSync(new OrderEvent(false,true,"MainActivity_Allselect", -1, this)); } else if ("取消全选".equals(getSub2Title().getText().toString())) { getSub2Title().setText("全选"); // To:FragmentOrder_Signed.onEvent() EventBusUtil.postSync(new OrderEvent(false,false, "MainActivity_Allselect", -1, this)); } break;1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
当然,我们在 viewpage 切换的时候需要关闭上个 fragment 的右移动画和checkbox 的被选效果,则这样就可以:
@Override public void onPageSelected(int position) { lastViewPageIndex=viewPagePosition; viewPagePosition=position; // To:FragmentOrder_Signed.onEvent() 切换,则恢复动画 EventBusUtil.postSync(new OrderEvent(true,false,"FragmentSecond",lastViewPageIndex,this)); // To:MainActivity.onEvent() 切换,则还原编辑字样 EventBusUtil.postSync(new OrderEvent(true,false,"FragmentSecond",-1,this)); }1
2
3
4
5
6
7
8
9
10
1
2
3
4
5
6
7
8
9
10
position 发挥作用,表示上个 fragment 的位置,以明确到底是哪个 fragment接收。
4. 最后看一下单选、多选、全选,以及删除是怎么做的:
单选
list.get(response.position).setIsselect(response.checked);1
1
设置 isselect 字段为 true 即可;
多选、全选同理。
删除