package cn.daixiaodong.myapp.fragment;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.DefaultItemAnimator;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewStub;
import com.avos.avoscloud.AVException;
import com.avos.avoscloud.AVObject;
import com.avos.avoscloud.AVQuery;
import com.avos.avoscloud.AVUser;
import com.avos.avoscloud.FindCallback;
import java.util.ArrayList;
import java.util.List;
import cn.daixiaodong.myapp.R;
import cn.daixiaodong.myapp.activity.SignInActivity;
import cn.daixiaodong.myapp.activity.SignInActivity_;
import cn.daixiaodong.myapp.adapter.UserCollectListAdapter;
import cn.daixiaodong.myapp.fragment.common.BaseFragment;
import static android.support.v7.widget.RecyclerView.OnScrollListener;
/**
* 用户收藏的idea
*/
public class UserCollectFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
private View mConvertView;
private SwipeRefreshLayout mRefreshLayout;
private RecyclerView mRecyclerView;
private UserCollectListAdapter mAdapter;
private List<AVObject> mData;
// 登录提示 View
private View mSignInTip;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
mConvertView = inflater.inflate(R.layout.fragment_collect, container, false);
return mConvertView;
}
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initViews();
}
private void initViews() {
mRefreshLayout = (SwipeRefreshLayout) mConvertView.findViewById(R.id.id_srl_refresh_data);
mRecyclerView = (RecyclerView) mConvertView.findViewById(R.id.id_rv_collect_recycler_view);
setUpRecyclerView();
setRefreshLayout();
if (isSignIn()) {
mRefreshLayout.post(new Runnable() {
@Override
public void run() {
mRefreshLayout.setRefreshing(true);
loadData(true);
}
});
} else {
updateUI();
}
}
private void setRefreshLayout() {
mRefreshLayout.setOnRefreshListener(this);
}
private void setUpRecyclerView() {
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(linearLayoutManager);
mRecyclerView.setItemAnimator(new DefaultItemAnimator());
mData = new ArrayList<>();
mAdapter = new UserCollectListAdapter(getActivity(), mData);
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnScrollListener(new OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
}
@Override
public void onRefresh() {
loadData(true);
}
/**
* 加载数据
*
* @param isRefresh true:数据刷新 false: 加载更多
*/
private void loadData(boolean isRefresh) {
if (isRefresh) {
AVQuery<AVObject> query = new AVQuery<>("user_collect");
query.whereEqualTo("user", AVUser.getCurrentUser());
query.include("idea");
query.findInBackground(new FindCallback<AVObject>() {
@Override
public void done(List<AVObject> list, AVException e) {
mRefreshLayout.setRefreshing(false);
if (e == null) {
mData.addAll(list);
mAdapter.notifyDataSetChanged();
} else {
e.printStackTrace();
}
}
});
}
}
/**
* 接收 SignInActivity 的返回数据
*
* @param requestCode
* @param resultCode
* @param data
*/
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == SignInActivity.SIGN_IN_REQUEST_CODE) {
if (resultCode == SignInActivity.SIGN_IN_SUCCESS_RESULT_CODE) {
updateUI();
mRefreshLayout.setRefreshing(true);
loadData(true);
}
}
}
/**
* 当视图显示时,更新界面状态
*
* @param hidden
*/
@Override
public void onHiddenChanged(boolean hidden) {
super.onHiddenChanged(hidden);
if (!hidden) {
updateUI();
}
}
/**
* 根据登录状态显示或隐藏 登录提示
*/
public void updateUI() {
if (isSignIn()) {
if (mSignInTip != null) {
mSignInTip.setVisibility(View.GONE);
mRefreshLayout.setVisibility(View.VISIBLE);
mRecyclerView.setVisibility(View.VISIBLE);
}
} else {
if (mSignInTip == null) {
ViewStub viewStub = (ViewStub) mConvertView.findViewById(R.id.id_vs_login_in_prompt);
mSignInTip = viewStub.inflate();
mSignInTip.findViewById(R.id.id_btn_log_in).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 跳转到登录界面
SignInActivity_.intent(UserCollectFragment.this).startForResult(SignInActivity.SIGN_IN_REQUEST_CODE);
}
});
}
mRecyclerView.setVisibility(View.GONE);
mRefreshLayout.setVisibility(View.GONE);
mSignInTip.setVisibility(View.VISIBLE);
}
}
}