手把手教你如何搭建一个自己的安卓快速开发框架之带你做自己的APP(四) (3)

因为是全部订单,所以使用 findAll 。 
如果是已签收订单(state为3代表已签收,其余状态各有意思): 则为:

lists=DataSupport.where("state=?","3").find(OrderInfoLitePal.class);

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 即可;

多选、全选同理。

删除

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzgsgd.html