• 草稿信息增删改查处理


    得到mMessages之后,先判断有没有草稿信息,有的话,从列表中删除草稿信息,将草稿信息保存在另外一个变量中。

    @Override
    protected void onPostExecute(List<TxrjMessage> result) {
        super.onPostExecute(result);
        mMessages = result;
        for(TxrjMessage msg : mMessages) {
            if(msg.getType() == Sms.MESSAGE_TYPE_DRAFT) {
                mEditMsg.setText(msg.getBody()); // 将草稿信息内容显示在文本框中。
                draftMsg = msg; // 将草稿信息保存在另外一个变量中。
                mMessages.remove(msg); // 将草稿信息从信息列表中删除。

                break;
            }
        }
        mListAdapter = new MessageListAdapter(mContext, mMessages);
        mListView.setAdapter(mListAdapter);
        if(TxrjConstant.ACTION_SEND_MESSAGE.equals(getIntent().getAction())) {
            performSendMessage(getIntent().getStringExtra(TxrjConstant.EXTRA_MESSAGE_BODY));
        }
        mProgressDialog.dismiss();
    }
    在信息列表界面中,点击返回键时,保存(修改,删除)草稿信息。

    private void removeDraftMessage() {
        if(draftMsg == null) {
            return;
        }
        getContentResolver().delete(Sms.CONTENT_URI,
                "_id=" + draftMsg.getMessageId(), null); // 删除指定sms._id草稿信息。

        draftMsg = null;
    }

    private void updateDraftMessage() {
        String body = mEditMsg.getText().toString();
        if(body.equals(draftMsg.getBody())) {
            return;
        }
        ContentValues values = new ContentValues();
        values.put(Sms.DATE, System.currentTimeMillis());
        values.put(Sms.BODY, body);
        getContentResolver().update(Sms.CONTENT_URI, values,
                "_id=" + draftMsg.getMessageId(), null); // 更新指定sms._id的草稿信息。
    }

    private void saveDraftMessage() {
        String body = mEditMsg.getText().toString();
        ContentValues values = new ContentValues();
        values.put(Sms.TYPE, Sms.MESSAGE_TYPE_DRAFT);
        values.put(Sms.THREAD_ID, mThreadId);
        values.put(Sms.DATE, System.currentTimeMillis());
        values.put(Sms.BODY, body);
        getContentResolver().insert(Sms.CONTENT_URI, values); // 插入一个新的草稿信息。

    }

    当编辑框文本内容不为空时,更新当前草稿信息,或者插入一个新的草稿信息。

    编辑框文本内容为空时,删除当前草稿信息(如果当前会话存在草稿信息)。

    @Override
    public void onBackPressed() {
        if(!TextUtils.isEmpty(mEditMsg.getText().toString())){
            if(draftMsg != null) {
                updateDraftMessage();
            } else {
                saveDraftMessage();
            }
        } else {
            removeDraftMessage();
        }
        super.onBackPressed();
    }

    需要注意的是:会话列表中的message_count不包括草稿信息。

    如果该会话只有草稿信息,没有别的信息,那么message_count值为零。

  • 相关阅读:
    RLP
    Merkle Patricia Tree (MPT) 树详解
    Patricia Tree
    Merkle Tree学习
    mongodb 范围查找
    mongodb _id 组成
    mongodb 时间戳转_id
    mongdi db _id 转时间戳
    js中的filter
    js中的filter
  • 原文地址:https://www.cnblogs.com/fengzhblog/p/3196094.html
Copyright © 2020-2023  润新知