private void submitComment(final long replyToCommentId) { final EditText editComment = (EditText) findViewById(R.id.edit_comment); final String commentText = EditTextUtils.getText(editComment); if (TextUtils.isEmpty(commentText)) return; // hide the comment box - this provides immediate indication that comment is being posted // and prevents users from submitting the same comment twice hideAddCommentBox(); // generate a "fake" comment id to assign to the new comment so we can add it to the db // and reflect it in the adapter before the API call returns final long fakeCommentId = ReaderCommentActions.generateFakeCommentId(); mIsSubmittingComment = true; ReaderActions.CommentActionListener actionListener = new ReaderActions.CommentActionListener() { @Override public void onActionResult(boolean succeeded, ReaderComment newComment) { mIsSubmittingComment = false; if (succeeded) { // comment posted successfully so stop highlighting the fake one and replace // it with the real one getCommentAdapter().setHighlightCommentId(0, false); getCommentAdapter().replaceComment(fakeCommentId, newComment); getListView().invalidateViews(); } else { // comment failed to post - show the comment box again with the comment text intact, // and remove the "fake" comment from the adapter editComment.setText(commentText); showAddCommentBox(replyToCommentId); getCommentAdapter().removeComment(fakeCommentId); ToastUtils.showToast( ReaderPostDetailActivity.this, R.string.reader_toast_err_comment_failed, ToastUtils.Duration.LONG); } } }; final ReaderComment newComment = ReaderCommentActions.submitPostComment( mPost, fakeCommentId, commentText, replyToCommentId, actionListener); if (newComment != null) { mIsPostChanged = true; editComment.setText(null); // add the "fake" comment to the adapter, highlight it, and show a progress bar // next to it while it's submitted getCommentAdapter().setHighlightCommentId(newComment.commentId, true); getCommentAdapter().addComment(newComment); // make sure it's scrolled into view scrollToCommentId(fakeCommentId); } }
/* * follow the tag or url the user typed into the EditText */ private void addCurrentEntry() { String entry = EditTextUtils.getText(mEditAdd).trim(); if (TextUtils.isEmpty(entry)) { return; } // is it a url or a tag? boolean isUrl = !entry.contains(" ") && (entry.contains(".") || entry.contains("://")); if (isUrl) { addAsUrl(entry); } else { addAsTag(entry); } }