/* * 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.activities; import java.util.ArrayList; import java.util.List; import android.annotation.TargetApi; import android.content.Intent; import android.graphics.Color; import android.graphics.drawable.ColorDrawable; import android.location.Location; import android.os.Build; import android.os.Bundle; import android.text.Editable; import android.text.TextUtils; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.AnimationSet; import android.view.animation.TranslateAnimation; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.FrameLayout; import android.widget.GridView; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.ProgressBar; import android.widget.TextView; import android.widget.ToggleButton; import com.umeng.comm.core.beans.CommConfig; import com.umeng.comm.core.beans.CommUser; import com.umeng.comm.core.beans.CommUser.Gender; import com.umeng.comm.core.beans.CommUser.Permisson; import com.umeng.comm.core.beans.FeedItem; import com.umeng.comm.core.beans.ImageItem; import com.umeng.comm.core.beans.LocationItem; import com.umeng.comm.core.beans.Topic; import com.umeng.comm.core.constants.Constants; import com.umeng.comm.core.listeners.Listeners.SimpleFetchListener; import com.umeng.comm.core.sdkmanager.ImagePickerManager; 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.ToastMsg; import com.umeng.comm.ui.adapters.ImageSelectedAdapter; import com.umeng.comm.ui.dialogs.AtFriendDialog; import com.umeng.comm.ui.dialogs.LocationPickerDlg; import com.umeng.comm.ui.fragments.TopicPickerFragment; import com.umeng.comm.ui.fragments.TopicPickerFragment.ResultListener; import com.umeng.comm.ui.mvpview.MvpPostFeedActivityView; import com.umeng.comm.ui.presenter.impl.FeedPostPresenter; import com.umeng.comm.ui.presenter.impl.TakePhotoPresenter; import com.umeng.comm.ui.utils.ContentChecker; import com.umeng.comm.ui.utils.FeedViewRender; import com.umeng.comm.ui.widgets.FeedEditText; import com.umeng.comm.ui.widgets.TopicTipView; /** * 发布feed的Activity */ public class PostFeedActivity extends BaseFragmentActivity implements OnClickListener, MvpPostFeedActivityView { /** * 内容编辑框,最多300字 */ protected FeedEditText mEditText; FrameLayout mFragmentLatout; /** * 选择的图片的GridView */ protected GridView mGridView; /** * 保存已经选择的图片的路径 */ // protected List<String> mImageSelectedAdapter.getDataSource() = new // ArrayList<String>(); /** * 显示已经选择的图片的Adapter */ private ImageSelectedAdapter mImageSelectedAdapter; /** * 位置 */ protected Location mLocation; /** * 通过拍照获取到的图片地址 */ // private String mNewImagePath; /** * 已选择的话题 */ protected List<Topic> mSelecteTopics = new ArrayList<Topic>(); /** * 保存已经@的好友 */ protected List<CommUser> mSelectFriends = new ArrayList<CommUser>(); /** * 我的位置TextView */ protected TextView mLocationTv; /** * 选择好友的dialog */ private AtFriendDialog mAtFriendDlg; /** * 地理位置选择dialog */ private LocationPickerDlg mLocationPickerDlg; /** * 保存地理位置的list */ protected List<LocationItem> mLocationItems = new ArrayList<LocationItem>(); /** * 选择话题的Fragment */ private TopicPickerFragment mTopicFragment; /** * 选择话题的ToggleButton */ private ToggleButton mTopicButton; /** * 选择图片的ImageButton */ private ImageButton mPhotoButton; /** * 地理位置的icon */ private ImageView mLocIcon; private View mLocationLayout; /** * 加载地理位置时的Progress */ private ProgressBar mLocProgressBar; protected String TAG = PostFeedActivity.class.getSimpleName(); /** * 是否是发布失败重新发布 */ private boolean isRepost = false; private static final String CHAR_WELL = "#"; private static final String CHAR_AT = "@"; protected boolean isForwardFeed = false; protected TopicTipView mTopicTipView; private static final String EDIT_CONTENT_KEY = "edit_content_key"; FeedPostPresenter mPostPresenter; @Override protected void onCreate(Bundle bundle) { super.onCreate(bundle); setContentView(ResFinder.getLayout("umeng_comm_post_feed_layout")); setFragmentContainerId(ResFinder.getId("umeng_comm_select_layout")); initViews(); initLocationLayout(); initPresenter(); Bundle extraBundle = getIntent().getExtras(); if (extraBundle == null) { return; } isRepost = extraBundle.getBoolean(Constants.POST_FAILED, false); // 设置是否是重新发送 mPostPresenter.setRepost(isRepost); // 从话题详情页面进入到发送新鲜事页面 Topic mTopic = extraBundle.getParcelable(Constants.TAG_TOPIC); if (mTopic != null) { mSelecteTopics.add(mTopic); if (CommConfig.getConfig().isDisplayTopicOnPostFeedPage()) {// 检查是否在编辑框添加此话题 mEditText.insertTopics(mSelecteTopics); } startFadeOutAnimForTopicTipView(); } } private void initPresenter() { mPostPresenter = new FeedPostPresenter(this, new ContentChecker(mSelecteTopics, mSelectFriends)); mPostPresenter.attach(this); } @Override protected void onRestoreInstanceState(Bundle savedInstanceState) { super.onRestoreInstanceState(savedInstanceState); String content = savedInstanceState.getString(EDIT_CONTENT_KEY); if (!TextUtils.isEmpty(content)) { mEditText.setText(content); } } private boolean isCharsOverflow(String extraText) { int extraTextLen = 0; if (!TextUtils.isEmpty(extraText)) { extraTextLen = extraText.length(); } int len = mEditText.getText().length(); return len + extraTextLen >= CommConfig.getConfig().mFeedLen; } /** * 初始化相关View */ protected void initViews() { // 发送和回退按钮 findViewById(ResFinder.getId("umeng_comm_post_ok_btn")).setOnClickListener(this); findViewById(ResFinder.getId("umeng_comm_post_back_btn")).setOnClickListener(this); mLocProgressBar = (ProgressBar) findViewById(ResFinder.getId( "umeng_comm_post_loc_progressbar")); mLocIcon = (ImageView) findViewById(ResFinder.getId("umeng_comm_post_loc_icon")); mLocIcon.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { initLocationLayout(); } }); mLocationTv = (TextView) findViewById(ResFinder.getId("umeng_comm_location_text")); mLocationLayout = findViewById( ResFinder.getId("umeng_community_loc_layout")); initEditView(); // 以下四个按钮分别是选择话题、添加图片、选择位置、@好友 findViewById(ResFinder.getId("umeng_comm_take_photo_btn")).setOnClickListener(this); findViewById(ResFinder.getId("umeng_comm_select_location_btn")).setOnClickListener( this); findViewById(ResFinder.getId("umeng_comm_at_friend_btn")).setOnClickListener(this); mPhotoButton = (ImageButton) findViewById(ResFinder .getId("umeng_comm_add_image_btn")); mPhotoButton.setOnClickListener(this); mTopicButton = (ToggleButton) findViewById(ResFinder.getId( "umeng_comm_pick_topic_btn")); mTopicButton.setOnClickListener(this); mFragmentLatout = (FrameLayout) findViewById(ResFinder.getId("umeng_comm_select_layout")); mGridView = (GridView) findViewById(ResFinder.getId("umeng_comm_prev_images_gv")); initSelectedImageAdapter(); mTopicTipView = (TopicTipView) findViewById(ResFinder.getId("umeng_comm_topic_tip")); if (CommConfig.getConfig().loginedUser.gender == Gender.FEMALE) {// 根据性别做不同的提示 mTopicTipView.setText(ResFinder.getString("umeng_comm_topic_tip_female")); } if (!isForwardFeed) { startAnimationForTopicTipView(); } } /** * 为话题提示VIew绑定动画</br> */ private void startAnimationForTopicTipView() { int timePiece = 500; int repeatCount = 4; int startDeny = 50; TranslateAnimation translateAnimation = new TranslateAnimation(0, 0, 10, 0); translateAnimation.setRepeatMode(Animation.REVERSE); // translateAnimation.setStartOffset(startDeny * repeatCount+timePiece); translateAnimation.setRepeatCount(Integer.MAX_VALUE); translateAnimation.setDuration(timePiece); AlphaAnimation alphaAnimationIn = new AlphaAnimation(0, 1.0f); alphaAnimationIn.setDuration(timePiece); alphaAnimationIn.setStartOffset(startDeny * repeatCount); AnimationSet animationSet = new AnimationSet(true); animationSet.addAnimation(alphaAnimationIn); animationSet.addAnimation(translateAnimation); // animationSet.addAnimation(alphaAnimationOut); // animationSet.setFillAfter(true); mTopicTipView.startAnimation(animationSet); } /** * 启动淡出动画</br> */ @TargetApi(Build.VERSION_CODES.HONEYCOMB) private void startFadeOutAnimForTopicTipView() { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { if (mTopicTipView.getAlpha() < 0.1f) { return; } } AlphaAnimation alphaAnimationOut = new AlphaAnimation(1.0f, 0); alphaAnimationOut.setDuration(300); alphaAnimationOut.setFillAfter(true); mTopicTipView.startAnimation(alphaAnimationOut); } /** * 位置是否已经初始化</br> * * @return */ private boolean isLocationInited() { return mLocation != null && mLocationItems.size() > 1; } /** * 获取地理位置信息。 */ protected void initLocationLayout() { // 如果地理位置信息已经初始化,则不再重复获取 if (isLocationInited()) { return; } mLocProgressBar.setVisibility(View.VISIBLE); mLocIcon.setVisibility(View.GONE); mLocationTv.setText(ResFinder.getString("umeng_comm_fetching_loc")); } @Override protected void onResume() { super.onResume(); showInputMethod(mEditText); mImageLoader.resume(); mTakePhotoPresenter.attach(this); } private void showKeyboard() { mFragmentLatout.setVisibility(View.GONE); showInputMethod(mEditText); } /** * 初始化EditView并设置回调</br> */ private void initEditView() { mEditText = (FeedEditText) findViewById(ResFinder.getId( "umeng_comm_post_msg_edittext")); mEditText.setFocusableInTouchMode(true); mEditText.requestFocus(); mEditText.setMinimumHeight(DeviceUtils.dp2px(this, 150)); mEditText.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { mEditText.mCursorIndex = mEditText.getSelectionStart(); mFragmentLatout.setVisibility(View.GONE); mTopicButton.setChecked(false); } }); mEditText.addTextChangedListener(new TextWatcher() { @Override public void onTextChanged(CharSequence s, int start, int before, int count) { if (count == 1) { String newChar = s.subSequence(start, start + count).toString(); // 转发时不显示话题 if (CHAR_WELL.equals(newChar) && !isForwardFeed) { showTopicFragment(); } else if (CHAR_AT.equals(newChar)) { showAtFriendsDialog(); } } } @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void afterTextChanged(Editable s) { } }); } /** * 从TextView获取位置text。该值是在获取地理位置信息时设置。</br> * * @return */ protected String getLocationAddr() { String locString = mLocationTv.getText().toString().trim(); String fetchFailed = ResFinder.getString("umeng_comm_fetching_loc_failed"); String fetching = ResFinder.getString("umeng_comm_fetching_loc"); String dontShowLoc = ResFinder.getString("umeng_comm_text_dont_show_location"); // 该判断需要重构 if (locString.equals(fetchFailed) || locString.equals(fetching) || locString.equals("") || locString.equals(dontShowLoc) || mLocationLayout.getVisibility() == View.INVISIBLE) { return ""; } return locString; } /** * 准备feed数据</br> */ protected FeedItem prepareFeed() { FeedItem mNewFeed = new FeedItem(); mNewFeed.text = mEditText.getText().toString().trim(); mNewFeed.locationAddr = getLocationAddr(); mNewFeed.location = mLocation; // 移除添加图标 mImageSelectedAdapter.getDataSource().remove(Constants.ADD_IMAGE_PATH_SAMPLE); for (String url : mImageSelectedAdapter.getDataSource()) { // 图片地址 mNewFeed.imageUrls.add(new ImageItem("", "", url)); } // 话题 mNewFeed.topics.addAll(mSelecteTopics); // @好友 mNewFeed.atFriends.addAll(mSelectFriends); // 发表的用户 mNewFeed.creator = CommConfig.getConfig().loginedUser; mNewFeed.type = mNewFeed.creator.permisson == Permisson.ADMIN ? 1 : 0; Log.d(TAG, " @@@ my new Feed = " + mNewFeed); return mNewFeed; } /** * 清除状态</br> */ @Override public void clearState() { mEditText.setText(""); mEditText.mAtMap.clear(); mEditText.mTopicMap.clear(); mImageSelectedAdapter.getDataSource().clear(); mTopicButton.setChecked(false); // mPhotoButton.setChecked(false); } @Override public void restoreFeedItem(FeedItem feedItem) { mEditText.setText(feedItem.text); mLocationTv.setText(feedItem.locationAddr); mImageSelectedAdapter.getDataSource().clear(); int count = feedItem.imageUrls.size(); for (int i = 0; i < count; i++) { // 图片 mImageSelectedAdapter.getDataSource().add(feedItem.imageUrls.get(i).originImageUrl); } // 图片 if (mImageSelectedAdapter.getDataSource().size() < 9) { mImageSelectedAdapter.getDataSource().add(Constants.ADD_IMAGE_PATH_SAMPLE); } mImageSelectedAdapter.notifyDataSetChanged(); // 好友 mSelectFriends.addAll(feedItem.atFriends); // 话题 mSelecteTopics.addAll(feedItem.topics); FeedViewRender.parseTopicsAndFriends(mEditText, feedItem); // 设置光标位置 mEditText.setSelection(mEditText.getText().length()); } @Override public void changeLocLayoutState(Location location, List<LocationItem> locationItems) { mLocation = location; mLocationItems = locationItems; mLocProgressBar.setVisibility(View.GONE); mLocIcon.setVisibility(View.VISIBLE); // 设置我的位置,我的位置放在第1个索引的位置 if (locationItems.size() > 0 && location != null) { mLocationTv.setText(locationItems.get(0).description); } else { mLocationTv.setText(ResFinder.getString("umeng_comm_fetching_loc_failed")); } } /** * 用户点击back按钮。</br> */ private void dealBackLogic() { mFragmentLatout.setVisibility(View.GONE); hideInputMethod(mEditText); mPostPresenter.handleBackKeyPressed(); this.finish(); } TakePhotoPresenter mTakePhotoPresenter = new TakePhotoPresenter(); @Override public void onClick(View v) { final int id = v.getId(); if (ResFinder.getId("umeng_comm_post_ok_btn") == id) { // 点击发送按钮 postFeed(prepareFeed()); } else if (ResFinder.getId("umeng_comm_post_back_btn") == id) { // 点击back按钮 dealBackLogic(); } else if (ResFinder.getId("umeng_comm_take_photo_btn") == id) { // 拍照按钮 mTakePhotoPresenter.takePhoto(); changeButtonStatus(false, false); } else if (ResFinder.getId("umeng_comm_select_location_btn") == id) { // 选择位置 showLocPickerDlg(); changeButtonStatus(false, false); } else if (ResFinder.getId("umeng_comm_add_image_btn") == id) { // 添加图片 pickImages(); changeButtonStatus(true, false); } else if (ResFinder.getId("umeng_comm_at_friend_btn") == id) { // @好友 showAtFriendsDialog(); changeButtonStatus(false, false); } else if (ResFinder.getId("umeng_comm_pick_topic_btn") == id) { // 选择话题 showTopicFragment(); changeButtonStatus(false, true); } } private void pickImages() { ImagePickerManager .getInstance() .getCurrentSDK() .jumpToPickImagesPage(this, (ArrayList<String>) mImageSelectedAdapter.getDataSource()); } protected void postFeed(FeedItem feedItem) { mPostPresenter.postNewFeed(feedItem); } @Override public void startPostFeed() { hideInputMethod(mEditText); finish(); } /** * 设置PhotoButton跟TopicButton的选中状态</br> * * @param photoSelected * @param topicSelected */ private void changeButtonStatus(boolean photoSelected, boolean topicSelected) { // mPhotoButton.setChecked(photoSelected); mTopicButton.setChecked(topicSelected); } /** * 显示选择话题的Fragment</br> */ private void showTopicFragment() { mFragmentLatout.setVisibility(View.VISIBLE); hideInputMethod(mEditText); if (mTopicFragment == null) { mTopicFragment = new TopicPickerFragment(); } showFragment(mTopicFragment); // 新增话题的回调 mTopicFragment.addTopicListener(new ResultListener<Topic>() { @Override public void onRemove(Topic topic) { mEditText.removeTopic(topic); } @Override public void onAdd(Topic topic) { Log.d(TAG, "### topic = " + topic); if (isCharsOverflow(topic.name)) { ToastMsg.showShortMsgByResName("umeng_comm_overflow_tips"); return; } if (!mEditText.mTopicMap.containsValue(topic)) { removeChar('#'); List<Topic> topics = new ArrayList<Topic>(); topics.add(topic); mEditText.insertTopics(topics); mSelecteTopics.add(topic); startFadeOutAnimForTopicTipView(); } showKeyboard(); } }); // 删除话题时的回调 mEditText.setTopicListener(new ResultListener<Topic>() { @Override public void onRemove(Topic topic) { mTopicFragment.uncheckTopic(topic); if (mEditText.mTopicMap.size() == 0 && !isForwardFeed) { startAnimationForTopicTipView(); } } @Override public void onAdd(Topic topic) { } }); } // 隐藏Fragment的回调 OnClickListener hideFragmentClickListener = new OnClickListener() { @Override public void onClick(View v) { mFragmentLatout.setVisibility(View.GONE); } }; /** * 已选择图片显示的Adapter * * @param listener 删除某张图片的回调 */ private void initSelectedImageAdapter() { mImageSelectedAdapter = new ImageSelectedAdapter(PostFeedActivity.this); mImageSelectedAdapter.getDataSource().add(Constants.ADD_IMAGE_PATH_SAMPLE); // 设置选择item时得背景为透明 mGridView.setSelector(new ColorDrawable(Color.TRANSPARENT)); mGridView.setAdapter(mImageSelectedAdapter); mGridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { String clickImageUrl = mImageSelectedAdapter.getItem(position); boolean isAddImage = Constants.ADD_IMAGE_PATH_SAMPLE.equals(clickImageUrl); if (isAddImage) { // 如果触发的是添加图片事件,则显示选择图片的Fragment pickImages(); } } }); } /** * 显示选择地理位置的Dialog</br> */ private void showLocPickerDlg() { if (mLocationPickerDlg == null) { mLocationPickerDlg = new LocationPickerDlg(this, ResFinder.getStyle( "umeng_comm_dialog_fullscreen")); } mLocationPickerDlg.setOwnerActivity(PostFeedActivity.this); mLocationPickerDlg.setupMyLocation(mLocation, mLocationItems); // 数据获取监听器 mLocationPickerDlg.setDataListener(new SimpleFetchListener<LocationItem>() { @Override public void onComplete(LocationItem data) { if (data != null && !TextUtils.isEmpty(data.description)) { mLocationLayout.setVisibility(View.VISIBLE); // 地理位置数据 mLocationTv.setText(data.description); } else { mLocationLayout.setVisibility(View.INVISIBLE); } // 显示输入框 showKeyboard(); } }); mLocationPickerDlg.show(); } /** * 显示@好友列表的Dialog</br> */ private void showAtFriendsDialog() { if (mAtFriendDlg == null) { mAtFriendDlg = new AtFriendDialog(PostFeedActivity.this, ResFinder.getStyle( "umeng_comm_dialog_fullscreen")); } mAtFriendDlg.setOwnerActivity(PostFeedActivity.this); // 数据获取监听器 mAtFriendDlg.setDataListener(new SimpleFetchListener<CommUser>() { @Override public void onComplete(CommUser user) { if (user != null) { if (isCharsOverflow(user.name)) { ToastMsg.showShortMsgByResName("umeng_comm_overflow_tips"); return; } removeChar('@'); mSelectFriends.add(user); // 插入数据 mEditText.atFriends(mSelectFriends); } // // 显示输入框 showKeyboard(); } }); mEditText.setResultListener(new ResultListener<CommUser>() { @Override public void onAdd(CommUser t) { } @Override public void onRemove(CommUser friend) { mSelectFriends.remove(friend); } }); mAtFriendDlg.show(); } /** * 移除字符</br> * * @param c */ private void removeChar(char c) { Editable editable = mEditText.getText(); if (editable.length() <= 0) { return; } if (editable.charAt(editable.length() - 1) == c) { editable.delete(editable.length() - 1, editable.length()); } } @Override public void onPause() { super.onPause(); mFragmentLatout.setVisibility(View.GONE); } @Override protected void onDestroy() { super.onDestroy(); mTakePhotoPresenter.detach(); } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); String content = mEditText.getText().toString(); if (!TextUtils.isEmpty(content)) { outState.putString(EDIT_CONTENT_KEY, content); } } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode != RESULT_OK) { return; } // 处理图片选择 onPickedImages(requestCode, data); // 将拍照得到的图片添加到gallery中, 并且显示到GridView中 onTakedPhoto(requestCode); super.onActivityResult(requestCode, resultCode, data); } private void onPickedImages(int requestCode, Intent data) { if (requestCode == Constants.PICK_IMAGE_REQ_CODE) {// selected image if (data != null && data.getExtras() != null) { mImageSelectedAdapter.getDataSource().clear(); // 获取选中的图片 List<String> selectedList = ImagePickerManager.getInstance().getCurrentSDK() .parsePickedImageList(data); updateImageList(selectedList); } } } private void updateImageList(List<String> selectedList) { appendAddImageIfLessThanNine(selectedList); mImageSelectedAdapter.updateListViewData(selectedList); } /** * Add the picture to the photo gallery. Must be called on all camera images * or they will disappear once taken. */ protected void onTakedPhoto(int requestCode) { if (requestCode != TakePhotoPresenter.REQUEST_IMAGE_CAPTURE) { return; } String imgUri = mTakePhotoPresenter.updateImageToMediaLibrary(); List<String> selectedList = mImageSelectedAdapter.getDataSource(); // 更新媒体库 selectedList.remove(Constants.ADD_IMAGE_PATH_SAMPLE); if (selectedList.size() < 9) { selectedList.add(imgUri); appendAddImageIfLessThanNine(selectedList); } else { ToastMsg.showShortMsgByResName("umeng_comm_image_overflow"); } mImageSelectedAdapter.notifyDataSetChanged(); } /** * 如果选中的图片小于九张那么在最后添加一个"添加"图片 * * @param selectedList */ private void appendAddImageIfLessThanNine(List<String> selectedList) { if (selectedList.size() < 9) { selectedList.add(Constants.ADD_IMAGE_PATH_SAMPLE); } } @Override public void canNotPostFeed() { if (mImageSelectedAdapter.getCount() < 9) { mImageSelectedAdapter.addData(Constants.ADD_IMAGE_PATH_SAMPLE); } } }