/* * 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.util.TypedValue; import android.view.View; import com.umeng.comm.core.beans.BaseBean; import com.umeng.comm.core.beans.CommConfig; import com.umeng.comm.core.beans.CommUser; import com.umeng.comm.core.beans.FeedItem; import com.umeng.comm.core.listeners.Listeners.OnResultListener; import com.umeng.comm.ui.presenter.impl.PostedFeedPresenter; import com.umeng.comm.ui.utils.Filter; import java.util.Iterator; import java.util.List; /** * 用户已经已经发布的feed页面 */ public class PostedFeedsFragment extends FeedListFragment<PostedFeedPresenter> { private CommUser mUser; /** * Feed 删除监听器,删除页面时回调给个人信息页面使得feed数量减1 [ TODO : 考虑是否和转发效果一样,使用广播 ] */ private OnDeleteListener mDeleteListener; private PostedFeedsFragment(CommUser user) { mUser = user; setRetainInstance(true); } @Override protected void initViews() { super.initViews(); mPostBtn.setVisibility(View.GONE); if (mListener != null) { mRefreshLayout.setOnScrollDirectionListener(new OnResultListener() { @Override public void onResult(int status) { // 1:向上滑动且第一项显示 (up) // 0:向下且大于第一项 (down) int firstVisible = mFeedsListView.getFirstVisiblePosition(); int headerCount = mFeedsListView.getHeaderViewsCount(); if ((status == 1 && firstVisible >= headerCount) || (status == 0 && firstVisible == headerCount)) { mListener.onResult(status); } } }); } } @Override protected PostedFeedPresenter createPresenters() { PostedFeedPresenter presenter = new PostedFeedPresenter(this); presenter.setId(mUser.id); return presenter; } @Override protected void showPostButtonWithAnim() { } public static PostedFeedsFragment newInstance(CommUser user) { return new PostedFeedsFragment(user); } @Override public void initAdapter() { // 设置只显示当前用户创建的feeds,过滤掉其他用户的feed setFeedFilter(new Filter<FeedItem>() { @Override public List<FeedItem> doFilte(List<FeedItem> originItems) { Iterator<FeedItem> myIterator = originItems.iterator(); while (myIterator.hasNext()) { final FeedItem feedItem = myIterator.next(); // id等于当前用户的id或者列表中已经包含该feed,那么移除该feed if (!feedItem.creator.id.equals(mUser.id) || mFeedLvAdapter.getDataSource().contains(feedItem)) { myIterator.remove(); } } return originItems; } }); super.initAdapter(); } @Override protected boolean isMyPage(FeedItem feedItem) { if (feedItem == null || !feedItem.creator.id.equals(mUser.id)) { return false; } return true; } @Override public void onRefreshStart() { mRefreshLayout.setProgressViewOffset(false, 0, (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 24, getResources() .getDisplayMetrics())); mRefreshLayout.setRefreshing(true); } /** * @param user */ public void setCurrentUser(CommUser user) { mUser = user; } protected void updateAfterDelete(FeedItem feedItem) { super.updateAfterDelete(feedItem); if (mDeleteListener != null) { mDeleteListener.onDelete(feedItem); } }; public void setOnDeleteListener(OnDeleteListener listener) { mDeleteListener = listener; } @Override protected boolean isMyFeedList() { return mUser != null && mUser.id.equals(CommConfig.getConfig().loginedUser.id); } /** * 删除监听器 * * @author mrsimple */ public static interface OnDeleteListener { public void onDelete(BaseBean item); } public void setOnAnimationResultListener(OnResultListener listener) { mListener = listener; } private OnResultListener mListener = null; public void executeScrollToTop(){ if ( mFeedsListView.getFirstVisiblePosition() > 10 ) { mFeedsListView.smoothScrollToPosition(0); } } }