Java tutorial
/* * The MIT License (MIT) * * Copyright (c) 2014-2015 Umeng, Inc * * Permission is hereby granted, free of charge, to any person obtaining a copy * of this software and associated documentation files (the "Software"), to deal * in the Software without restriction, including without limitation the rights * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the Software is * furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in * all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN * THE SOFTWARE. */ package com.umeng.comm.ui.fragments; import android.annotation.TargetApi; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.graphics.drawable.Drawable; import android.os.Build; import android.support.v4.view.ViewPager; import android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener; import android.text.TextUtils; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ListView; import android.widget.TextView; import com.umeng.comm.core.beans.CommUser; import com.umeng.comm.core.beans.Comment; import com.umeng.comm.core.beans.FeedItem; import com.umeng.comm.core.beans.Like; import com.umeng.comm.core.constants.Constants; import com.umeng.comm.core.constants.HttpProtocol; import com.umeng.comm.core.listeners.Listeners; import com.umeng.comm.core.listeners.Listeners.LoginOnViewClickListener; import com.umeng.comm.core.listeners.Listeners.OnItemViewClickListener; import com.umeng.comm.core.receiver.BaseBroadcastReceiver; import com.umeng.comm.core.utils.CommonUtils; import com.umeng.comm.core.utils.DeviceUtils; import com.umeng.comm.core.utils.Log; import com.umeng.comm.core.utils.ResFinder; import com.umeng.comm.core.utils.ResFinder.ResType; import com.umeng.comm.ui.adapters.FeedCommentAdapter; import com.umeng.comm.ui.adapters.FeedLikeAdapter; import com.umeng.comm.ui.adapters.viewholders.FavouriteFeedItemViewHolder; import com.umeng.comm.ui.presenter.impl.FeedDetailWBPresenter; import com.umeng.common.ui.fragments.CommentEditFragment; import com.umeng.common.ui.mvpview.MvpCommentView; import com.umeng.common.ui.mvpview.MvpFeedDetailView; import com.umeng.common.ui.mvpview.MvpLikeView; import com.umeng.common.ui.util.BroadcastUtils; import com.umeng.common.ui.util.ViewFinder; import com.umeng.common.ui.widgets.RefreshLayout; import com.umeng.common.ui.widgets.RefreshLvLayout; import java.util.List; /** * ??Feed?,FeedItemViewParser??Feed?.Feed?Header, * ??FeedLike? */ public class FeedDetailFragment extends CommentEditFragment<List<FeedItem>, FeedDetailWBPresenter> implements MvpCommentView, MvpLikeView, MvpFeedDetailView { /** * ?EditView?XXX */ private OnItemViewClickListener<String> mCommentClickListener; /** * item view */ protected View mClickItemView; /** * ???? */ protected int mCurFeedItemIndex = 0; /** * EditVIew?feed? */ protected int mScrollDis = 0; FavouriteFeedItemViewHolder mFeedViewHolder; // ??Fragment?Activity protected String mContainerClass = null; // TextView mLikeTextView; // // LikeView mLikeView; // ? // TextView mCommentCountTextView; // // ?? // TextView mForwardCountTextView; /** * ?Like??? */ View mActionsLayout; /** * LIKE */ View mLikeActionLayout; /** * LIKE */ TextView mLikeActionView; /** * ? */ View mForwardActionLayout; /** * */ View mCommentActionLayout; /** * ,ListViewparent */ RefreshLvLayout mRefreshLayoutComment, mRefreshLayoutLike; /** * ListView */ private ListView mCommentListView, mLikeListView; /** * ListView Adapter */ FeedCommentAdapter mCommentAdapter; FeedLikeAdapter mLikeAdapter; Drawable drawableLine; private LoginReceiver mLoginReceiver; /** * ? */ public Boolean mIsShowComment; public ViewPager viewPager; /** * FeedDetailFragmentfeedDetailActivity * * @param feedItem * @return */ public static FeedDetailFragment newFeedDetailFragment(FeedItem feedItem) { FeedDetailFragment fragment = new FeedDetailFragment(); fragment.mFeedItem = feedItem; return fragment; } @Override protected int getFragmentLayout() { return ResFinder.getLayout("umeng_comm_feed_detail_fragment"); } @Override protected FeedDetailWBPresenter createPresenters() { super.createPresenters(); return new FeedDetailWBPresenter(this, this, this, mFeedItem); } @Override protected void initWidgets() { super.initWidgets(); View headerView = initFeedContentView(); initRefreshLayout(headerView); initActionsView(); BroadcastUtils.registerFeedBroadcast(getActivity(), mReceiver); mLoginReceiver = new LoginReceiver(); getActivity().registerReceiver(mLoginReceiver, new IntentFilter(Constants.ACTION_LOGIN_SUCCESS)); } @Override protected void setupOthers() { mContainerClass = getActivity().getClass().getName(); // ? setFeedItemData(mFeedItem); } public void updateFeedItem(FeedItem feedItem) { if (mFeedItem != null && feedItem != null) { mFeedItem.title = feedItem.title; mFeedItem.text = feedItem.text; mFeedItem.publishTime = feedItem.publishTime; mFeedItem.likeCount = feedItem.likeCount; mFeedItem.commentCount = feedItem.commentCount; mFeedItem.forwardCount = feedItem.forwardCount; mFeedItem.imageUrls = feedItem.imageUrls; mFeedItem.category = feedItem.category; mFeedItem.isRecommended = feedItem.isRecommended; mFeedItem.isLiked = feedItem.isLiked; } else { mFeedItem = feedItem; } setFeedItemData(mFeedItem); } @Override public void onStart() { super.onStart(); boolean isScroll = getArguments().getBoolean(Constants.TAG_IS_SCROLL, false); if (!isScroll) { return; } if (mIsShowComment) { showCommentLayout(); } // mCommentCountTextView.postDelayed(new Runnable() { // // @Override // public void run() { // executeScroll(); // } // }, 300); } /** * ?</br> */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) private void executeScroll() { // int scrollDis = mCommentCountTextView.getHeight() - mCommentCountTextView.getPaddingTop() // + 26; // if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { // mCommentListView.smoothScrollToPositionFromTop(1, scrollDis); // } else { // mCommentListView.smoothScrollToPosition(1); // } } /** * Feed?FeedHeader * * @return */ private View initFeedContentView() { drawableLine = ResFinder.getDrawable("blue_line_for_tv"); drawableLine.setBounds(0, 0, drawableLine.getMinimumWidth(), DeviceUtils.dp2px(getActivity(), 2)); ViewFinder headerViewFinder = new ViewFinder(getActivity(), ResFinder.getLayout("umeng_comm_feed_detail_header")); // FeedHeader View View headerView = headerViewFinder.findViewById(ResFinder.getId("umeng_comm_feed_content_layout")); // FeedItemViewHolderFeed mFeedViewHolder = new FavouriteFeedItemViewHolder(getActivity(), headerView); mFeedViewHolder.setIsFeedDetail(); mFeedViewHolder.setShowFavouriteView(false); mFeedViewHolder.setContainerClass(mContainerClass); mFeedViewHolder.hideActionButtons(); // mFeedViewHolder.setShareActivity(getActivity()); mFeedViewHolder.setFeedItem(mFeedItem); setLikeCount(mFeedItem.likeCount); setForwardCount(mFeedItem.forwardCount); mFeedViewHolder.mForwardCountTextView.setClickable(false); setCommentCount(mFeedItem.commentCount); mFeedViewHolder.mCommentCountTextView .setBackgroundResource(ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_feed_detail_tab_bg")); mFeedViewHolder.mCommentCountTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mRefreshLayoutComment.getVisibility() != View.VISIBLE) { mRefreshLayoutComment.setVisibility(View.VISIBLE); mRefreshLayoutLike.setVisibility(View.GONE); mFeedViewHolder.mCommentCountTextView.setBackgroundResource( ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_feed_detail_tab_bg")); mFeedViewHolder.mLikeCountTextView .setBackgroundColor(ResFinder.getColor("umeng_comm_white_color")); } } }); mFeedViewHolder.mLikeCountTextView.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { if (mRefreshLayoutLike.getVisibility() != View.VISIBLE) { mRefreshLayoutLike.setVisibility(View.VISIBLE); mRefreshLayoutComment.setVisibility(View.GONE); mFeedViewHolder.mLikeCountTextView.setBackgroundResource( ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_feed_detail_tab_bg")); mFeedViewHolder.mCommentCountTextView .setBackgroundColor(ResFinder.getColor("umeng_comm_white_color")); } } }); // mFeedViewHolder.mForwardCountTextView.setOnClickListener(new View.OnClickListener() { // @Override // public void onClick(View view) { // mPresenter.gotoForwardActivity(mFeedItem); // } // }); // Like?TextView // mLikeTextView = headerViewFinder.findViewById(ResFinder.getId("umeng_comm_like_count_tv")); // // mLikeView = headerViewFinder.findViewById(ResFinder // .getId("umeng_comm_like_users_layout")); // // mLikeView.setLikeonClickListener(new LikeonClickListener() { // @Override // public void onClickListener(CommUser user) { // Intent intent = new Intent(); // intent.setClass(getActivity(), UserInfoActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // intent.putExtra(Constants.TAG_USER, user); // getActivity().startActivity(intent); // } // }); // mCommentCountTextView = headerViewFinder.findViewById(ResFinder // .getId("umeng_comm_comment_count_tv")); // mForwardCountTextView = headerViewFinder.findViewById(ResFinder // .getId("umeng_comm_forward_count_tv")); return headerViewFinder.getRootView(); } private void initRefreshLayout(View headerView) { mRefreshLayoutComment = mViewFinder.findViewById(ResFinder.getId("umeng_comm_feed_refresh_layout")); mRefreshLayoutComment.setRefreshing(false); mRefreshLayoutComment.setEnabled(false); // footer if (mFeedItem.commentCount > Constants.COUNT) { mRefreshLayoutComment.setDefaultFooterView(); } mRefreshLayoutComment.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { mRefreshLayoutComment.setRefreshing(false); } }); mRefreshLayoutComment.setOnLoadListener(new RefreshLayout.OnLoadListener() { @Override public void onLoad() { mPresenter.loadMoreComments(); } }); mRefreshLayoutLike = mViewFinder.findViewById(ResFinder.getId("umeng_comm_feed_refresh_layout_like")); mRefreshLayoutLike.setRefreshing(false); mRefreshLayoutLike.setEnabled(false); // footer if (mFeedItem.likeCount > Constants.COUNT) { mRefreshLayoutLike.setDefaultFooterView(); } mRefreshLayoutLike.setOnRefreshListener(new OnRefreshListener() { @Override public void onRefresh() { mRefreshLayoutLike.setRefreshing(false); } }); mRefreshLayoutLike.setVisibility(View.GONE); mRefreshLayoutLike.setOnLoadListener(new RefreshLayout.OnLoadListener() { @Override public void onLoad() { mPresenter.loadMoreLikes(); } }); headerView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (mCommentLayout.getVisibility() == View.VISIBLE) { hideCommentLayout(); return true; } return false; } }); // viewPager = mViewFinder.findViewById(ResFinder.getId("list_container")); mCommentListView = mViewFinder.findViewById(ResFinder.getId("umeng_comm_comments_list")); mCommentListView.setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (mCommentLayout.getVisibility() == View.VISIBLE) { hideCommentLayout(); return true; } return false; } }); mCommentListView.setOnItemClickListener(new Listeners.OnItemClickLoginListener() { @Override protected void doAfterLogin(View v, int position) { if (position == 0) { return; } final int realPosition = position - 1; replayComment(realPosition); } }); mLikeListView = mViewFinder.findViewById(ResFinder.getId("umeng_comm_like_list")); mLikeListView.setVisibility(View.VISIBLE); // header mLikeListView.addHeaderView(headerView); mCommentListView.addHeaderView(headerView); } private void replayComment(int position) { Comment comment = mCommentAdapter.getItem(position); mCommentPresenter.clickCommentItem(position, comment); } private void showCommentLayoutWitdCommentId() { // ????? if (mFeedItem.extraData.containsKey(HttpProtocol.COMMENT_ID_KEY)) { String commentId = mFeedItem.extraData.getString(HttpProtocol.COMMENT_ID_KEY); if (TextUtils.isEmpty(commentId)) { return; } int position = getCommentPosition(commentId); if (position >= 0) { mFeedItem.extraData.remove(HttpProtocol.COMMENT_ID_KEY); final Comment item = mCommentAdapter.getItem(position); // if (item.creator.id.equals(CommConfig.getConfig().loginedUser.id)) { // ToastMsg.showShortMsgByResName("umeng_comm_do_not_reply_yourself"); // } else { showCommentLayout(position, item); // } } } } private int getCommentPosition(String commentId) { List<Comment> feedComments = mFeedItem.comments; for (int i = 0; i < feedComments.size(); i++) { final Comment item = feedComments.get(i); if (commentId.equals(item.id)) { return i; } } return -1; } private void initActionsView() { mActionsLayout = mViewFinder.findViewById(ResFinder.getId("umeng_comm_action_layout")); // ? mLikeActionLayout = mViewFinder.findViewById(ResFinder.getId("umeng_comm_like_layout")); mLikeActionLayout.setOnClickListener(new LoginOnViewClickListener() { @Override protected void doAfterLogin(View v) { mPresenter.setFeedItem(mFeedItem); if (mFeedItem.isLiked) { mPresenter.postUnlike(mFeedItem.id); } else { mPresenter.postLike(mFeedItem.id); } } }); // TextView mLikeActionView = mViewFinder.findViewById(ResFinder.getId("umeng_comm_like_action_tv")); setupLikeView(mFeedItem.isLiked); mForwardActionLayout = mViewFinder.findViewById(ResFinder.getId("umeng_comm_forward_layout")); mForwardActionLayout.setOnClickListener(new LoginOnViewClickListener() { @Override protected void doAfterLogin(View v) { mPresenter.gotoForwardActivity(mFeedItem); } }); mCommentActionLayout = mViewFinder.findViewById(ResFinder.getId("umeng_comm_comment_layout")); mCommentActionLayout.setOnClickListener(new LoginOnViewClickListener() { @Override protected void doAfterLogin(View v) { showCommentLayout(); } }); } private void setupLikeView(boolean isLiked) { if (isLiked) { mLikeActionView.setCompoundDrawablesWithIntrinsicBounds( ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_feed_detail_like_p"), 0, 0, 0); mLikeActionView.setTextColor(ResFinder.getColor("umeng_comm_title")); } else { mLikeActionView.setCompoundDrawablesWithIntrinsicBounds( ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_feed_detail_like_n"), 0, 0, 0); mLikeActionView.setTextColor(ResFinder.getColor("umeng_comm_color_a5")); } } // @Override // protected void postComment(String text) { //// mPresenter.postComment(text, mReplyUser, mReplyCommentId); // } @Override public void showCommentLayout(int realPosition, Comment comment) { String hintString = getReplyPrefix(comment.creator); mReplyUser = comment.creator; mReplyCommentId = comment.id; showCommentLayout(); mCommentEditText.setHint(hintString); mCommentListView.smoothScrollToPosition(realPosition); } protected void showCommentLayout() { super.showCommentLayout(); mCommentEditText.setHint(""); mActionsLayout.setVisibility(View.GONE); View titleView = getActivity().findViewById(ResFinder.getId("umeng_comm_feed_title_layout")); if (titleView != null) { titleView.setVisibility(View.GONE); } } protected void hideCommentLayout() { super.hideCommentLayout(); mActionsLayout.setVisibility(View.VISIBLE); View titleView = getActivity().findViewById(ResFinder.getId("umeng_comm_feed_title_layout")); if (titleView != null) { titleView.setVisibility(View.VISIBLE); } } private void initLikeUserLayout(final String nextUrl) { // if (mFeedItem.likes.size() > 0) { // mLikeView.setVisibility(View.VISIBLE); // mLikeView.setLikeMoreonClickListener(new LikeMoreonClickListener() { // @Override // public void onClickListener(ArrayList<CommUser> list) { // Intent intent = new Intent(); // intent.setClass(getActivity(), LikeUsersActivity.class); // intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); // intent.putExtra(Constants.TAG_COUNT, mFeedItem.likeCount); // intent.putExtra(HttpProtocol.NAVIGATOR_KEY, nextUrl); // intent.putExtra(HttpProtocol.FEED_ID_KEY, mFeedItem.id); // intent.putParcelableArrayListExtra(Constants.TAG_USERS, list); // getActivity().startActivity(intent); // } // }); // mLikeView.addLikeUsers(mFeedItem, nextUrl); // setLikeCount(mFeedItem.likes.size()); // } else { // mLikeView.setVisibility(View.GONE); // } } /** * ??ListView?? * * @param feedItem * */ private void setFeedItemData(final FeedItem feedItem) { if (TextUtils.isEmpty(feedItem.id)) { return; } // Feed Content View mFeedViewHolder.setFeedItem(feedItem); setLikeCount(feedItem.likeCount); setCommentCount(feedItem.commentCount); setForwardCount(feedItem.forwardCount); setupLikeView(feedItem.isLiked); // ? initCommentListView(feedItem); } private void setCommentCount(int count) { StringBuffer str = new StringBuffer(ResFinder.getString("umeng_comm_comment")); str.append(" ").append(CommonUtils.getLimitedCount(count)); mFeedViewHolder.mCommentCountTextView.setText(str.toString()); } private void setLikeCount(int count) { StringBuffer str = new StringBuffer(ResFinder.getString("umeng_comm_click_like")); str.append(" ").append(CommonUtils.getLimitedCount(mFeedItem.likeCount)); mFeedViewHolder.mLikeCountTextView.setText(str.toString()); } private void setForwardCount(int count) { StringBuffer str = new StringBuffer(ResFinder.getString("umeng_comm_forward")); str.append(" ").append(CommonUtils.getLimitedCount(count)); mFeedViewHolder.mForwardCountTextView.setText(str); } private void initCommentListView(FeedItem item) { mCommentAdapter = new FeedCommentAdapter(getActivity()); mCommentAdapter.addDatasOnly(item.comments); mCommentListView.setAdapter(mCommentAdapter); mLikeAdapter = new FeedLikeAdapter(getActivity()); mLikeAdapter.addDatasOnly(item.likes); mLikeListView.setAdapter(mLikeAdapter); } /* * */ protected void showCommentLayout(int pos, boolean fromClickBtn) { if (mCommentClickListener != null) { mCommentClickListener.onItemClick(0, ""); } } /** * ?EditText??XXX</br> * * @return */ private String getReplyPrefix(CommUser replyUser) { if (replyUser == null) { return ""; } String replyText = ResFinder.getString("umeng_comm_reply"); String colon = ResFinder.getString("umeng_comm_colon"); return replyText + replyUser.name + colon; } @Override public void postCommentSuccess(Comment comment, CommUser replyUser) { mReplyCommentId = ""; mReplyUser = null; if (mCommentAdapter == null) { return; } comment.replyUser = replyUser; mCommentAdapter.addToFirst(comment); setCommentCount(mFeedItem.commentCount); mCommentEditText.setText(""); mCommentEditText.setHint(""); } @Override public void loadMoreComment(List<Comment> comments) { mRefreshLayoutComment.setLoading(false); mRefreshLayoutLike.setLoading(false); comments.removeAll(mCommentAdapter.getDataSource()); mCommentAdapter.addData(comments); // ? mFeedItem.comments.addAll(comments); } @Override public void loadMoreLike(List<Like> likes) { mRefreshLayoutComment.setLoading(false); mRefreshLayoutLike.setLoading(false); likes.removeAll(mCommentAdapter.getDataSource()); mLikeAdapter.addData(likes); // ? mFeedItem.likes.addAll(likes); } @Override public void onRefreshEnd() { mRefreshLayoutComment.setLoading(false); mRefreshLayoutComment.setRefreshing(false); mRefreshLayoutLike.setLoading(false); mRefreshLayoutLike.setRefreshing(false); } public void fetchLikesComplete(String nexturl) { // initLikeUserLayout(nexturl); } @Override public void fetchCommentsComplete() { mCommentAdapter.updateListViewData(mFeedItem.comments); } @Override public void showAllComment(boolean result) { } @Override public void showOwnerComment(boolean result) { } @Override public void like(String id, boolean isLiked) { setupLikeView(isLiked); if (isLiked) { mLikeActionView.setCompoundDrawablesWithIntrinsicBounds( ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_feed_detail_like_p"), 0, 0, 0); mLikeActionView.setTextColor(ResFinder.getColor("umeng_comm_title")); } else { mLikeActionView.setCompoundDrawablesWithIntrinsicBounds( ResFinder.getResourceId(ResType.DRAWABLE, "umeng_comm_feed_detail_like_n"), 0, 0, 0); mLikeActionView.setTextColor(ResFinder.getColor("umeng_comm_color_a5")); } } @Override public void updateLikeView(String nextUrl) { initLikeUserLayout(nextUrl); setLikeCount(mFeedItem.likeCount); mLikeAdapter.updateListViewData(mFeedItem.likes); } @Override public void updateCommentView() { mCommentAdapter.updateListViewData(mFeedItem.comments); showCommentLayoutWitdCommentId(); } @Override public void onCommentDeleted(Comment comment) { mCommentAdapter.removeItem(comment); setCommentCount(mFeedItem.commentCount); BroadcastUtils.sendFeedUpdateBroadcast(getActivity(), mFeedItem); } @Override public void onDestroy() { BroadcastUtils.unRegisterBroadcast(getActivity(), mReceiver); getActivity().unregisterReceiver(mLoginReceiver); super.onDestroy(); } private BroadcastUtils.DefalutReceiver mReceiver = new BroadcastUtils.DefalutReceiver() { public void onReceiveFeed(Intent intent) { FeedItem feedItem = getFeed(intent); if (feedItem == null) { return; } BroadcastUtils.BROADCAST_TYPE type = getType(intent); if (BroadcastUtils.BROADCAST_TYPE.TYPE_FEED_POST == type) { updateForwarCount(feedItem, 1); } else if (BroadcastUtils.BROADCAST_TYPE.TYPE_FEED_DELETE == type) { updateForwarCount(feedItem, -1); } } }; private void updateForwarCount(FeedItem item, int count) { if (TextUtils.isEmpty(item.sourceFeedId)) { return; } mFeedItem.forwardCount = mFeedItem.forwardCount + count; setForwardCount(mFeedItem.forwardCount); } @Override public void onRefreshStart() { } private class LoginReceiver extends BaseBroadcastReceiver { @Override protected void onReceiveIntent(Context context, Intent intent) { if (Constants.ACTION_LOGIN_SUCCESS.equals(intent.getAction())) { // mPresenter.loadCommentFromServer(); } } } }