Android版DailyInsist(四)——业务逻辑和数据操作RecordFragment

本文介绍了在Android应用DailyInsist的RecordFragment中,如何处理新建任务、每日签到和删除任务的业务逻辑。通过实现ITaskFinder接口,使用SQLite数据库存储和获取任务数据,并创建TaskItemAdapter来展示任务列表。在TaskItemView中,实现了任务详情的显示和删除操作的对话框。当任务被删除时,会发送广播更新RecordFragment的数据和界面。
摘要由CSDN通过智能技术生成
统计界面RecordFragment中的业务逻辑涉及到三个方面:新建任务,每日签到和删除任务。有上面三个中的任何一个操作时,统计界面都要做出相应的更新。其中删除操作在统计界面中进行。
这里参考了文章中实现自定义ListView的形式。

TaskBean类在上一篇文章中已经介绍过了,下面定义一个接口 ITaskFinder
public interface ITaskFinder {
     List<TaskBean> findAllTask();
}

接口中只有一个方法 findAllTask,获取所有任务的列表。
接口实现类 ITaskFinderImpl如下:
@EBean
public class ITaskFinderImpl implements ITaskFinder {
     @RootContext
     Context context;

     private MyDatabaseHelper dbHelper = null;

     @Override
     public List<TaskBean> findAllTask() {
            if ( dbHelper == null) {
                 dbHelper = new MyDatabaseHelper( context, "di.db3", 1);
           }
            return DailyInsistDao. getTasks(dbHelper, 0, -1);
     }

}

因为RecordFragment要列出所有的任务并统计它们的信息,所以我们需要一个 TaskItemAdapter来绑定数据到视图上, TaskItemView是列表项的视图,如下:
@EViewGroup(R.layout.task_item )
public class TaskItemView extends LinearLayout {

     @ViewById
     TextView tv_rate, tv_item_title, tv_start_to_end;

     @ViewById
     LinearLayout ll_rec_rate, ll_main;

     @StringRes
     String rate;

     @DrawableRes
     Drawable orange_rec, blue_rec, gray_rec, btn_up, btn_down;

     @ViewById
     Button btn_toggle;

     /*
      * set toggle button to control show or hide delete part
      */
     @ViewById
     RelativeLayout rl_del;

     /*
      * for delete
      */
     private int taskId;

     public TaskItemView(Context context) {
            super(context);
     }

     public void bind(TaskBean task) {

            taskId = task.getTaskId();

            /*
            * show rate view
            */
            tv_rate.setText(String. format(rate, task.getCompleted(),
                     task.getDuring()));

            /*
            * show title view
            */
            tv_item_title.setText(task.getContent());

            /*
            * show rectangle rate
            */

            ll_rec_rate.removeAllViews();
            /*
            * the task is finished
            */
            if (task.getCompleted() == task.getDuring()) {
                 for ( int i = 0, count = task.getDuring(); i < count; i++) {

                      ll_rec_rate.addView(getRegBackgroundByDrawable( ll_rec_rate,
                                 orange_rec));
                }
           } else {
                 /*
                 * if the task is not finished, completed parts use blue rectangle
                 * and res
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值