package com.troy.xifan.fragment; import android.content.Context; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.widget.LinearLayoutManager; import butterknife.BindView; import com.chenenyu.router.Router; import com.jude.easyrecyclerview.EasyRecyclerView; import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter; import com.troy.xifan.R; import com.troy.xifan.activity.ConversationActivity; import com.troy.xifan.activity.MainActivity; import com.troy.xifan.adapter.ConversationListAdapter; import com.troy.xifan.config.Constants; import com.troy.xifan.http.HttpRequestFactory; import com.troy.xifan.http.callback.SimpleHttpRequestCallback; import com.troy.xifan.http.exception.ApiException; import com.troy.xifan.http.request.BaseRequestParams; import com.troy.xifan.model.response.DirectMessagesListRes; import com.troy.xifan.util.UIUtils; import java.util.List; /** * Created by chenlongfei on 2016/12/16. */ public class DirectMessageFragment extends BaseFragment { @BindView(R.id.recycler_view) EasyRecyclerView mRecyclerView; private int mPage; private ConversationListAdapter mConversationListAdapter; private boolean isLoaded; private MainActivity mMainActivity; public static Fragment newInstance() { return new DirectMessageFragment(); } @Override public void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); } @Override public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser && !isLoaded) { getDirectMessage(false); isLoaded = true; } } @Override public void onAttach(Context context) { super.onAttach(context); mMainActivity = (MainActivity) context; } private void getDirectMessage(final boolean loadMore) { if (!loadMore && mMainActivity != null) { mMainActivity.removeMessageBadge(); } mPage = loadMore ? ++mPage : 1; BaseRequestParams request = new BaseRequestParams(); request.setPage(String.valueOf(mPage)); HttpRequestFactory.getInstance() .getConversationList(request, new SimpleHttpRequestCallback<List<DirectMessagesListRes>>() { @Override public void onSuccess(List<DirectMessagesListRes> responseData) { if (!loadMore) { mConversationListAdapter.clear(); } mConversationListAdapter.addAll(responseData); mConversationListAdapter.notifyDataSetChanged(); mRecyclerView.setRefreshing(false); } @Override public void onFail(ApiException apiException) { UIUtils.showToast(getActivity(), apiException.getErrorMessage()); } }); } @Override protected void initViews() { mConversationListAdapter = new ConversationListAdapter(getActivity()); mConversationListAdapter.setMore(R.layout.view_load_more, new RecyclerArrayAdapter.OnMoreListener() { @Override public void onMoreShow() { getDirectMessage(true); } @Override public void onMoreClick() { } }); mConversationListAdapter.setError(R.layout.view_load_more_error, new RecyclerArrayAdapter.OnErrorListener() { @Override public void onErrorShow() { } @Override public void onErrorClick() { mConversationListAdapter.resumeMore(); } }); mConversationListAdapter.setOnItemClickListener( new RecyclerArrayAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { DirectMessagesListRes directMessagesList = mConversationListAdapter.getItem(position); String otherUserId = directMessagesList.getOtherid(); Bundle bundle = new Bundle(); bundle.putString(ConversationActivity.BUNDLE_OTHER_USER_ID, otherUserId); Router.build(Constants.Router.CONVERSATION) .extras(bundle) .go(getActivity()); } }); mRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); mRecyclerView.setAdapterWithProgress(mConversationListAdapter); mRecyclerView.setRefreshListener(this); mRecyclerView.setRefreshingColor(getResources().getIntArray(R.array.refreshing_color)); } @Override protected int getContentViewResId() { return R.layout.fragment_direct_message; } @Override public void onRefresh() { getDirectMessage(false); } }