精华内容
下载资源
问答
  • 我使用jQuery(和JS当然)编写的简单待办事项列表。 我已经创建了静态待办事项列表,只有通过编辑代码才能添加新项目。从逻辑上讲,我现在要创建一个动态列表。jQuery待办事项列表我已经尝试了一些方法,如.load()代码...

    我使用jQuery(和JS当然)编写的简单待办事项列表。 我已经创建了静态待办事项列表,只有通过编辑代码才能添加新项目。从逻辑上讲,我现在要创建一个动态列表。jQuery待办事项列表

    我已经尝试了一些方法,如.load()代码从外部文件创建.after(),但这一切都出错了。

    你会建议我做什么?

    我会很感激,如果你能帮助我解决这个问题。

    Gloserio,是的,添加项目现在不工作,因为我所描述的问题的我。

    ncubica,问题是,眼下我不能添加新项目到我的清单(仅BU编辑代码)。动态意味着可以添加/删除项目。要做到这一点,我尝试使用.after()方法,里面的函数会复制

    List item hereButtons here(粗略地说),但它会将所有列表项放在上面,将所有按钮放在最下面。

    这是JS代码的一部分:

    // Waiting for the document to load

    $(document).ready(function() {

    // Wanted to create a dynamic item list, that's why I used this variable. I thought it would

    // generate unique IDs (there was 'id++' somewhere in the function I already deleted).

    var id = 1;

    // This is going to be used as an action for 'Add Item' button. (It is not a button, actually, it is just with cursor: pointer. Using causes page reload);

    $('.add').click(function() {

    $('#item'+id).after(function(i) { // '#item'+id should be something like this in the code: #item2, #item3, etc.

    })

    })

    // 'Done' button

    $('#done1').click(function() {

    console.log('# "Done" button pressed');

    $('#list1').css('background-color','#89f49a').css('border','1px solid #16bf31').css('text-decoration','line-through').css('color','#817f7f').css('font-weight','normal');

    console.log('# Item doned successfully');

    });

    // 'Undone' button (is gonna be renamed to 'Reset');

    $('#undone1').click(function() {

    console.log('# "Undone" button pressed');

    $('#list1').css('background-color','').css('border','').css('text-decoration','').css('color','').css('font-weight','normal');

    });

    // 'Working' button

    $('#working1').click(function() {

    $('#list1').css('background-color','#edc951').css('border','1px solid #dda119').css('font-weight','bold').css('color','#000').css('text-decoration','none');

    });

    // 'Cancel' button

    $('#cancel1').click(function() {

    $('#list1').css('background-color','#ff8c8c').css('border','1px solid #ea2c2c').css('font-weight','normal').css('text-decoration','line-through').css('color','#f00');

    });

    // 'Delete' button

    $('#del1').click(function() {

    $('div#dlist1').remove();

    $('li#action1').remove();

    });

    });

    和HTML的一部分:

    Create add feature
    Delete

    正如你所看到的,只有1我写的列表项。 ID是静态的,目前无法更改。我只需要改变ID(好吧,它会是var id = 1; id ++)并添加部分代码(在

    +0

    点击'加item',它什么都不做,是正常的吗?几个问题:你是什么意思的动态?你目前的问题在哪里? –

    +0

    对不起,我不明白你的问题是什么..请显示一些代码,我们可以帮助你 –

    展开全文
  • 番茄工作表格 ,番茄工作法-档案记录,番茄工作法-活动清单,番茄工作法-今日待办
  • 导读Go For It,是我们开源工具系列中的第十个工具,它将使你在 2019 年更高效,它在 Todo.txt 系统的基础上构建,以帮助你完成更多工作。每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年...

    导读

    Go For It,是我们开源工具系列中的第十个工具,它将使你在 2019 年更高效,它在 Todo.txt 系统的基础上构建,以帮助你完成更多工作。

    每年年初似乎都有疯狂的冲动想提高工作效率。新年的决心,渴望开启新的一年,当然,“抛弃旧的,拥抱新的”的态度促成了这一切。通常这时的建议严重偏向闭源和专有软件,但事实上并不用这样。

    这是我挑选出的 19 个新的(或者对你而言新的)开源工具中的第 10 个工具来帮助你在 2019 年更有效率。

    Go For It

    有时,人们要高效率需要的不是一个花哨的看板或一组笔记,而是一个简单、直接的待办事项清单。像“将项目添加到列表中,在完成后检查”一样基本的东西。为此,纯文本 Todo.txt 系统可能是最容易使用的系统之一,几乎所有系统都支持它。

    af986ca598ec72b454c1a30ee32ef379.png

    Go For It 是一个简单易用的 Todo.txt 图形界面。如果你已经在使用 Todo.txt,它可以与现有文件一起使用,如果还没有,那么可以同时创建待办事项和完成事项。它允许拖放任务排序,允许用户按照他们想要执行的顺序组织待办事项。它还支持 Todo.txt 格式指南中所述的优先级、项目和上下文。而且,只需单击任务列表中的项目或者上下文就可通过它们过滤任务。

    b2a59ee77593e67ad704b2c0f9fdfb90.png

    一开始,Go For It 可能看起来与任何其他 Todo.txt 程序相同,但外观可能是骗人的。将 Go For It 与其他程序真正区分开的功能是它包含一个内置的番茄工作法计时器。选择要完成的任务,切换到“计时器”选项卡,然后单击“启动”。任务完成后,只需单击“完成”,它将自动重置计时器并选择列表中的下一个任务。你可以暂停并重新启动计时器,也可以单击“跳过”跳转到下一个任务(或中断)。在当前任务剩余 60 秒时,它会发出警告。任务的默认时间设置为 25 分钟,中断的默认时间设置为 5 分钟。你可以在“设置”页面中调整,同时还能调整 Todo.txt 和 done.txt 文件的目录的位置。

    215ed308a68e89a348685d2c11894ef9.png

    Go For It 的第三个选项卡是“已完成”,允许你查看已完成的任务并在需要时将其清除。能够看到你已经完成的可能是非常激励的,也是一种了解你在更长的过程中进度的好方法。

    2178a97985d384e0a3e54c313ff72988.png

    它还有 Todo.txt 的所有其他优点。Go For It 的列表可以被其他使用相同格式的程序访问,包括 Todo.txt 的原始命令行工具和任何已安装的附加组件。

    Go For It 旨在成为一个简单的工具来帮助管理你的待办事项列表并完成这些项目。如果你已经使用过 Todo.txt,那么 Go For It 是你的工具箱的绝佳补充,如果你还没有,这是一个尝试最简单、最灵活系统之一的好机会。

    本文由 LCTT 原创编译,Linux中国 荣誉推出

    展开全文
  • 前言 工欲善其事必先利其器。 学习一点儿如何安排时间产出工作量的方法,对于生活也是很有...chapter1 消减待办任务 优先级排列不清晰是高效工作的主要威胁之一。这里做一点,那里做一点,但最后什么都没 ...

    前言

    工欲善其事必先利其器。
    学习一点儿如何安排时间产出工作量的方法,对于生活也是很有必要的。

    上一篇在这里单核工作法1
    原理1原理1
    原理23原理23
    原理45原理45
    单核5:适用性适用性
    单核6:颠倒优先级优先级
    单核7:全景闹钟全景闹钟
    单核8:小结单核8:小结

    chapter1 消减待办任务

    优先级排列不清晰是高效工作的主要威胁之一。这里做一点,那里做一点,但最后什么都没
    完成。如果一项任务完不成,那么对它付出的辛苦努力可能都会付之东流。在有太多任务要
    选择的时候,就没有办法排列清晰的优先级。
    我们必须学会定期删除待办清单中的任务。要从根本上解决问题,还应该切断任务来源。某
    些任务来源只会产生一些我们永远也不会去做的任务,必须停止关注它们。
    本章提出了快捷清单和除草等实用方法,强调必须按照重要程度而不是紧急程度排列优先
    级。此外,本章还给出了一些节省精力的技巧,包括减少任务流入,在一开始就对有些事情
    说“不”。

    一分钟:如何做到削减待办任务?

    五项基本概念

    ※ 忙碌谬论是一种迷信,认为手上的事情越多,人就越有价值。如果预先把日程表填得满
    满的,预料之外出现的重要任务就无法得到处理,你反而更容易成为其他人的瓶颈。

    ※ 快捷清单包含当前最重要的 5 项任务。每天早晨把它们写在一张纸上。如果还要添加更
    多的任务,必须去掉原有的——要么完成一项、要么直接删掉一项。

    ※ 本周目的把你的专注点放在“为什么”上。在这一周,你最想取得什么进展、得到什么收
    获、产出什么成果?把首要目的写入一张索引卡片,贴在工作间隔板上。每当迷茫的时候,
    本周目的可以提醒你。

    ※ 集草器清单收集一些未排序的任务和想法,都是你没有拒绝、但也不会马上做的事情。
    表格中的每项任务应该包括“目标、利益关系人、进入清单的日期”这三项属性。

    ※ 除草是删掉集草器清单里的内容,每个星期都要做。除草是一项必要工作,以便保持清
    单可读、及时、可靠。你随时都可以根据需要在集草器清单里增加内容,但应该每周做一次
    批量清理。

    问卷

    在开始脑力激荡之前,先找出你在现阶段工作当中经常遇到的“时间杀手”,给它们打钩。

    • 同时进行的工程太多
    • 利益关系人太多
    • 收到的电子信息太多
    • 老板提出的要求无法拒绝
    • 不敢叫停工程
    • 毫无准备的任务
    • 工作材料不全
    • 无权制定决策的会议
    • 目的不清楚
    • 追求短期成果
    • 交付周期太长
    • 书面工作没完没了
    • 持续的压力
    • 同事不可靠
    • 需求变来变去
    • 技术专家不负责任
    • 工作量暴增而能力跟不上
    • 工作分不出去
    • 危机式管理
    • 没有排列优先级

    黄瓜和洋蓟在商店门口相遇

    黄瓜:阿蓟,真高兴见到你。最近顺利吗?
    洋蓟:挺好的,谢谢关心。我在 8 个不同的工程里担任重要角色,另外自己也在做一些事,
    都是对公司未来意义重大的事情。
    黄瓜:如果你给这么多工程出力,那肯定有很多利益关系人感谢你吧?
    洋蓟:嗯,8 个工程各有各的项目经理,个个都想让我做他那块的事;而我更愿意花时间做
    我自己的事。
    黄瓜:意思是说,你成了公司的瓶颈?
    洋蓟:是啊,确实。尽管我熬夜干活,但还是根本赶不上交活的截止期限。同事都卡住了。
    黄瓜:卡在什么地方?
    洋蓟:他们没法继续工作,只能等我的结果出来。他们都在等我。
    黄瓜:听说过约翰 · 利特尔吗?
    洋蓟:约翰……什么?
    黄瓜:我认为,你如果要尽快交付,就别开那么多条线。
    洋蓟:你的意思是,我必须停止开始新任务,而且要开始完成老任务?
    黄瓜:是的。先选择最重要的一个工程,告诉另外 7 位项目经理,你把他们排在后面了。这
    样他们也可以另找有时间的人为他们工作。这对每个人来说都是最好的办法。
    洋蓟:听起来不错。我应该实行新政策,缩短待处理工程的队列,拒绝接新事情,并且把我
    做事的优先级告诉每个人。

    展开全文
  • 手绘待办事项表矢量素材适用于待办事项表的AI格式素材。
  • 添加新的待办事项(标题,期限和重要性级别为必填项,必须填写详细信息,添加项后重新设置表格) 列出所有待办事项 任务的重要性也通过使用的别针的颜色来表示(紫色代表最重要,绿色代表最少) 根据重要性,期限...
  • 表格创建待办事项 导航导航 待办事项 所有待办事项组件 完成的组件 未完成的组件 创建待办事项表格 输入处理 受控组件 提交时存储待办事项 导航导航 待办事项 储存资料 待办事项文字 完成了 纳米ID 使...
  • 待办事项TODO

    2021-05-16 11:19:21
    待办事项TODO:我的第一个app 文章目录待办事项TODO:我的第一个app要实现的功能三个界面MainActivityEdit_Todo_ActivityCold_Todo_Activityjava部分数据库RecyclerView ​ 其实也不算是第一个app了,之前还做了一个...

    待办事项TODO:我的第一个app


    ​ 其实也不算是第一个app了,之前还做了一个记帐本,不过因为实在是没有经验也没有勇气,使得开发周期额外的长,最终只有一个半成品的形态。所以这周开始决定去换个方式学习安卓,想了很多我可以实现的,也不太难的app,然后分别每个app花一周时间去完成。待办事项TODO就是这个计划的第一个app

    要实现的功能

    • 添加todo项,并可以选择属性:加急urgent、常规normal、冷藏cold(暂时不想看见但始终都是要做的事)
    • 主页面只显示加急和常规的todo项,且加急项会在优先展示
    • 冷宫页面用于显示冷藏的todo项
    • 每个todo项可以切换属性(不过最后还是偷懒了,urgent属性不能改为normal属性)

    三个界面

    MainActivity
    • 从数据库加载加急、普通的Todo项
    • 允许添加待办事项
    • 进入冷宫的入口
    • 允许每个待办事项:完成、删除、加急或冷却
    • 添加待办事项,成功则刷新界面
    Edit_Todo_Activity
    • 选择待办事项的属性
    • 添加描述并确认-添加到数据库
    Cold_Todo_Activity
    • 只显示冷暖的Todo项,允许删除、回到普通、加急

    ​ 设置布局的第一件事是挑选颜色,红红绿绿的不太好看,所以我为加急事项选择了橙色,普通事项选择了青色

        <color name="urgent">#FF9800</color>
        <color name="normal">#2ACD8C</color>
        <color name="cold">#727E7E</color>
    

    ​ 然后是设置布局:其中Cold_Todo_Activity的布局最简单,只有一个RecyclerView;MainActivity的布局则是再多加一个条装至添加Todo的按钮,只不过这个按钮是通过TextView和setOnClickListener一起实现的——因为设计之初希望这个app的风格比较方方正正,所以用TextView添加背景貌似挺方便的。因为布局简单,所以使用什么Layout都没什么所谓
    在这里插入图片描述在这里插入图片描述

    ​ 使用RecyclerView的目的是为了方便地展示有多少项todo,这就少不了要设置每一项的界面。因为所有的部件都在一条线上,为了方便,使用了RelativeLayout

    在这里插入图片描述

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="72dp"
        android:background="?attr/cold_bgColor"
        android:orientation="horizontal">
    
        <TextView
            android:id="@+id/cold_item_description"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_marginLeft="28dp"
            android:gravity="center"
            android:textSize="24dp"
            android:background="@null"
            tools:text="吃饭" />
    
        <ImageButton
            android:id="@+id/become_urgent_fromCold"
            style="@style/cold_button"
            android:layout_marginVertical="20dp"
            android:layout_marginRight="16dp"
            android:layout_toLeftOf="@id/become_no_cold"
            android:background="@drawable/urgent" />
    
        <ImageButton
            android:id="@+id/become_no_cold"
            style="@style/cold_button"
            android:layout_marginTop="21dp"
            android:layout_marginRight="24dp"
            android:layout_marginBottom="19dp"
            android:layout_toLeftOf="@id/cold_item_status_bar"
            android:background="@drawable/no_cold" />
    
        <ImageView
            android:id="@+id/cold_item_status_bar"
            android:layout_width="20dp"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_marginVertical="16dp"
            android:layout_marginRight="32dp"
            android:background="@color/cold" />
    
    
        <ImageView
            android:layout_width="match_parent"
            android:layout_height="1dp"
            android:layout_alignParentBottom="true"
            android:layout_marginHorizontal="20dp"
            android:background="@color/dark20" />
    </RelativeLayout>
    

    ​ Edit_Todo_Activity的布局上花了一些时间。因为界面上的部件较多,所以我选用了constraintlayout。在设置三个RadioButton时我遇到了问题:我希望每个radioButton都可以在左边显示对应属性颜色,中间显示文字,而按钮在最右方。我尝试在RadioGroup中添加一层constraintlayout,但这样做的话会让RadioGroup对RadioButton的约束失效,即RadioButton不再只能同时选中一个了。其次,我在drawable文件中绘制的颜色方块不能通过drawableRight等其他属性添加到RadioButton上,因为这些drawable文件没有具体的长宽。所以最后我在总布局中添加了一层LinearLayout,这个布局会在RadioGroup的左边,使得所有项目一一对其;剩下的问题,文字和按钮位置对调,则可以通过属性layout_Direction来实现。为了让每一项的属性调整方便,可以将部分属性添加到styles.xml

    在这里插入图片描述

    <RadioButton
                android:id="@+id/button_normal"
                style="@style/edit_todo_radio_button"
                android:checked="true"
                android:text="常规 normal" />
    
    <style name="edit_todo_radio_button">
            <item name="android:layout_width">match_parent</item>
            <item name="android:layout_height">50dp</item>
            <item name="android:layoutDirection">rtl</item>
            <item name="android:textSize">28dp</item>
            <item name="android:layout_marginVertical">8dp</item>
        </style>
    

    ​ 因为学过一点电脑绘图,所以能够自己完成了图标的制作:在项目中直接new一个ImageAsset,选择自己绘制的前景图与背景图就可以了。

    java部分

    数据库

    ​ 因为要面临存储很多项Todo的缘故,所以使用SQLite数据库是必须的。这里使用了TodoContract来保存Todo表格的表格名、列名、以及用数字表示的类别,其中TodoEntry类实现了BaseColumns,这样,每一行都会自带一个独一无二的ID,可以用作PrimaryKey

    // TodoContract类
    package com.example.todo.data;
    
    import android.provider.BaseColumns;
    
    public class TodoContract {
        private TodoContract() {}
    
        public class TodoEntry implements BaseColumns {
            public static final String TABLE_NAME = "TODO";
            public static final String COLUMN_ITEM = "ITEM";
            public static final String COLUMN_STATUS = "STATUS";
            public static final int categoryNormal = 0;
            public static final int categoryUrgent = 1;
            public static final int categoryCold = 2;
        }
    }
    

    ​ 数据库的操作还离不开SQLiteOpenHelper类的帮助,所以新建了一个类TodoHelper使其继承该类,创建构造函数,并借用在TodoContract中保存的表名和列名重写新建数据表的onCreate()onUpgrade()方法,特别要注意的是SQL语句的空格,在字符串连接的时候挺容易漏的

    package com.example.todo.data;
    
    import android.content.Context;
    import android.database.sqlite.SQLiteDatabase;
    import android.database.sqlite.SQLiteOpenHelper;
    
    import com.example.todo.data.TodoContract.TodoEntry;
    
    import androidx.annotation.Nullable;
    
    public class TodoHelper extends SQLiteOpenHelper {
        public static final int version = 1;
        public static final String name = "todo.db";
    
        public TodoHelper(@Nullable Context context) {
            super(context, name, null, version);
        }
    
        private static final String create = "CREATE TABLE " + TodoEntry.TABLE_NAME + " (" + TodoEntry._ID +
                " INTEGER PRIMARY KEY," + TodoEntry.COLUMN_ITEM + " TEXT," + TodoEntry.COLUMN_STATUS + " INTEGER)";
    
        private static final String delete = "DROP TABLE IF EXISTS " + TodoEntry.TABLE_NAME;
    
        @Override
        public void onCreate(SQLiteDatabase db) {
            db.execSQL(create);
        }
    
        @Override
        public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
            db.execSQL(delete);
            onCreate(db);
        }
    }
    
    RecyclerView

    ​ 既然要使用RecyclerView,那么还要增加它对应的Adapter:TodoListAdapterColdTodoAdapter,以及增加内部类TodoListViewHolderColdTodoViewHolder。在各自的ViewHolder绑定布局的部件,在Adapter需要重写的三个构造方法中,onCreateViewHolder()用于指定绑定的布局、返回新的ViewHolder;onBindViewHolder()用于为布局添加数据,加急的Todo项理应不能再加急了,所以在这里将向上的箭头设为不可见;getItemCount()则用于查找还有多少项数据。其次,还要将RecyclerView和Adapter绑定在一起。

    recyclerViewTodoList = (RecyclerView)findViewById(R.id.recyclerView_todo_list);
            adapter = new TodoListAdapter(cursor,this,this);
            recyclerViewTodoList.setAdapter(adapter);
            recyclerViewTodoList.setLayoutManager(new LinearLayoutManager(this));
    

    ​ 在主界面MainActivity.java中实例化一个TodoHelper并获得可读的数据库和可写的数据库,并使用Cursor的实例获取表格数据:加急或常规的Todo项,然后一并传入,这样才能让Adapter方便获取数据。

    public TodoListAdapter(Cursor cursor, Context context, TodoItemListener listener) {
        this.cursor = cursor;
        this.context = context;
        this.listener = listener;
    }
    
    @NonNull
    @Override
    public TodoListViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context)
                .inflate(R.layout.todo_item, parent, false);
    
        return new TodoListViewHolder(view);
    }
    
    @Override
    public void onBindViewHolder(@NonNull TodoListViewHolder holder, int position) {
        if (!cursor.moveToPosition(position)) return;
    
        String description = cursor.getString(cursor.getColumnIndex(TodoEntry.COLUMN_ITEM));
        int category = cursor.getInt(cursor.getColumnIndex(TodoEntry.COLUMN_STATUS));
        long id = cursor.getLong(cursor.getColumnIndex(TodoEntry._ID));
    
        holder.textViewTodoDescription.setText(description);
        int statusColor = 0;
        switch (category) {
            case 0:
                statusColor = ContextCompat.getColor(context, R.color.normal);
                break;
            case 1:
                statusColor = ContextCompat.getColor(context, R.color.urgent);
                holder.imageButtonBecomeUrgent.setVisibility(View.INVISIBLE);
        }
        holder.imageViewTodoStatusBar.setBackgroundColor(statusColor);
        holder.itemView.setTag(id);
        holder.button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ...
            }
        });
        holder.imageButtonBecomeUrgent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ...
            }
        });
        holder.imageButtonBecomeCold.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                // ...
            }
        });
    }
    
    @Override
    public int getItemCount() {
        return cursor.getCount();
    }
    
    

    ​ 因为布局中,当点击方框即代表完成该Todo项,此时应该删除;当点击向上箭头或向下箭头时,则应该更新该Todo项。但对Adapter而言,没有获得可写的数据库,因此干不了这些事。我参照了Udacity安卓基础课的方法(RecyclerView那章的最后一个练习),给Adapter增加了一个接口,里面有两个方法onDoneClick()onStatusChangeClick();在构造器中传入这个接口,然后在上面onBindViewHolder()的代码中省略号的位置放入这两个方法。

    holder.button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onDoneClick(id);
                }
            });
            holder.imageButtonBecomeUrgent.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onStatusChangeClick(id, TodoEntry.categoryUrgent);
                }
            });
            holder.imageButtonBecomeCold.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listener.onStatusChangeClick(id, TodoEntry.categoryCold);
                }
            });
        }
    

    ​ 最后要在MainActivity中实现这两个方法,完成数据库的操作时,还应该刷新我的RecyclerView:在Adapter中添加方法swapCursor()。这个方法会传入新的Cursor以代替旧的那个,然后调用this.notifyDataSetChanged()

    public void swapCursor(Cursor newCursor) {
            if (cursor != null) cursor.close();
            cursor = newCursor;
            if (newCursor != null) {
                this.notifyDataSetChanged();
            }
        }
    

    ColdTodoActivity.java中,删除一项Todo的方法与主页面不同,是通过左划或右划删除的。这可以通过新增一个ItemTouchHelper实现,并绑定到对应的RecyclerView上

    new ItemTouchHelper(new ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT | ItemTouchHelper.RIGHT) {
                @Override
                public boolean onMove(@NonNull RecyclerView recyclerView, @NonNull RecyclerView.ViewHolder viewHolder, @NonNull RecyclerView.ViewHolder target) {
                    return false;
                }
    
                @Override
                public void onSwiped(@NonNull RecyclerView.ViewHolder viewHolder, int direction) {
                    long id = (long) viewHolder.itemView.getTag();
                    dbWrite.delete(TodoEntry.TABLE_NAME, TodoEntry._ID + "=" + id, null);
                    adapter.swapCursor(getCursorCold());
                }
            }).attachToRecyclerView(coldRecyclerView);
    

    ​ 页面与页面之间的跳转是通过Intent来实现的,每次跳转页面都有可能会对数据库产生操作,所以这里使用了startActivityForResult()。当其他页面成功对数据库操作了,就会返回一个RESULT_OK。在主页面中重写onActivityResullt()方法,只有返回结果为RESULT_OK时才调用Adapter的swapCursor()方法

    @Override
        protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
            if(resultCode == RESULT_OK){
                adapter.swapCursor(getCursorMainActivity());
            }
        }
    

    ​ 这大概就是所有内容了。不过在运行app时,概率性会遇到常规的Todo项没有向上的箭头,但我还没有找到原因。第一次写博客,觉得我说得有点乱了。

    ​ 最后放上github链接https://github.com/rabbitAiry/TODO

    展开全文
  • 待办清单 bmobA short example of how easy it is to build a CRUD App using the Flutter framework.一个简短的示例,说明使用Flutter框架构建CRUD应用有多么容易。 About one year ago, I noticed some mobile app...
  • 待办事项清单练习
  • react待办事项You could be wondering what is so special about React; What we will do is pick up from a previous post about React components and put to practice the theories we discussed following ...
  • 产品待办列表的几个最佳实践

    千次阅读 2014-04-28 21:12:23
    产品待办列表对应的英文是project backlog,也有翻译为“产品待办事项列表”,是指为开发完善产品而待办的事项列表。 在Scrum Guide中,产品待办列表是一个排序的列表,包含所有产品需要的东西,也是产品需求变动的...
  • Vue 简易待办事项表

    2021-04-09 21:58:18
    文章目录效果图源代码 效果图 无事项时: 有事项时: 源代码 <!DOCTYPE html> <html lang="en"> <head>...meta name="viewport" content="width=device-width, initial-scale=1.0
  • 改进“新待办事项”表格的样式完成(目前...直到可选的“改进设计”任务) 完成标记待办事项完成(目前...需要更好地处理待办事项) json中需要的其他todo属性(布尔值“ done”) 更改待办事项的样式,以便在...
  • 周期待办事项 Cycle.js待办事项清单示例 ...在表格中显示待办事项列表,并进行编辑和删除 显示用于创建和编辑待办事项的表单 在发送到服务器之前验证表单 仅使用h以及使用创建视图-您可以决定自己更喜欢哪个视图。 :-)
  • 不是所有的markdown编辑器都支持待办事项的,以下为csdn支持的待办事项语法 Markdown任务完成(待办事项)语法 - [ ] 计划任务 - [x] 完成任务 Markdown任务完成(待办事项)显示效果 计划任务 完成任务 Markdown ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 5,626
精华内容 2,250
关键字:

待办工作表格