Files
assistant-android/app/src/main/java/com/gh/gamecenter/libao/LibaoSearchFragment.java

171 lines
5.5 KiB
Java

package com.gh.gamecenter.libao;
import android.content.Intent;
import android.support.v4.app.Fragment;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.LinearLayout;
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
import com.gh.base.fragment.BaseFragment;
import com.gh.common.view.VerticalItemDecoration;
import com.gh.gamecenter.LibaoDetailActivity;
import com.gh.gamecenter.R;
import com.gh.gamecenter.entity.LibaoEntity;
import com.gh.gamecenter.eventbus.EBReuse;
import org.greenrobot.eventbus.EventBus;
import java.util.List;
import butterknife.BindView;
import butterknife.OnClick;
import static com.gh.gamecenter.libao.Libao1Fragment.OPEN_LIBAO_APPBAR;
/**
* Created by khy on 5/09/17.
*/
public class LibaoSearchFragment extends BaseFragment implements SwipeRefreshLayout.OnRefreshListener {
@BindView(R.id.libao_search_rv_list)
RecyclerView mRecyclerView;
@BindView(R.id.libao_search_pb_loading)
ProgressBarCircularIndeterminate mLoading;
@BindView(R.id.reuse_no_connection)
LinearLayout mNoConnection;
@BindView(R.id.reuse_none_data)
LinearLayout mNoneData;
private LinearLayoutManager mLayoutManager;
private LibaoSearchAdapter mAdapter;
public final static int LIBAO_SEARCH_REQUEST = 6; // 刷新礼包状态
Runnable runnable = new Runnable() {
@Override
public void run() {
mAdapter = new LibaoSearchAdapter(LibaoSearchFragment.this, LibaoSearchFragment.this, mEntrance);
mRecyclerView.setAdapter(mAdapter);
}
};
@Override
protected int getLayoutId() {
return R.layout.fragment_libao_serach;
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == LIBAO_SEARCH_REQUEST && mAdapter.getSkipPosition() != -1) {
// 更新对应位置
mAdapter.notifyItemChanged(mAdapter.getSkipPosition());
mAdapter.setSkipPosition(-1);
}
}
@Override
protected void initView(View view) {
super.initView(view);
mRecyclerView.setHasFixedSize(true);
mLayoutManager = new LinearLayoutManager(getActivity());
mRecyclerView.setLayoutManager(mLayoutManager);
mAdapter = new LibaoSearchAdapter(this, this, mEntrance);
mRecyclerView.addItemDecoration(new VerticalItemDecoration(getContext(), 8, false));
mRecyclerView.setAdapter(mAdapter);
mRecyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
if (newState == RecyclerView.SCROLL_STATE_IDLE
&& mLayoutManager.findLastVisibleItemPosition() + 1 == mAdapter.getItemCount()) {
if (!mAdapter.isOver() && !mAdapter.isLoading() && !mAdapter.isNetworkError()) {
mAdapter.addLibaoList(mAdapter.getLibaoListSize());
}
}
}
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
int position = mLayoutManager.findFirstCompletelyVisibleItemPosition();
if (position == 0 && Math.abs(dy) > 10) {
EventBus.getDefault().post(new EBReuse(OPEN_LIBAO_APPBAR));
}
}
});
}
@Override
public void loadDone() { // 数据加载成功回调
colseRefresh();
mLoading.setVisibility(View.GONE);
mNoneData.setVisibility(View.GONE);
mNoConnection.setVisibility(View.GONE);
}
@Override
public void loadError() { // 数据加载失败回调
colseRefresh();
mLoading.setVisibility(View.GONE);
mNoConnection.setVisibility(View.VISIBLE);
mNoneData.setVisibility(View.GONE);
}
@Override
public void loadEmpty() {
colseRefresh();
mLoading.setVisibility(View.GONE);
mNoneData.setVisibility(View.VISIBLE);
mNoConnection.setVisibility(View.GONE);
}
@OnClick(R.id.reuse_no_connection)
public void reconnection() { // 重新连接
mRecyclerView.setVisibility(View.VISIBLE);
mLoading.setVisibility(View.VISIBLE);
mNoConnection.setVisibility(View.GONE);
postDelayedRunnable(runnable, 1000);
}
private void colseRefresh() {
Fragment parentFragment = getParentFragment();
if (parentFragment instanceof Libao1Fragment) {
((Libao1Fragment) parentFragment).colseRefresh();
}
}
@Override
public void onRefresh() {
postDelayedRunnable(runnable, 1000);
}
public void search() {
if (mNoneData.getVisibility() == View.VISIBLE) {
mNoneData.setVisibility(View.GONE);
}
postRunnable(runnable);
}
@Override
public void onListClick(View view, int position, Object data) {
super.onListClick(view, position, data);
List<LibaoEntity> libaoList = (List<LibaoEntity>) data;
LibaoEntity libaoEntity = libaoList.get(position);
mAdapter.setSkipPosition(position);
Intent intent = LibaoDetailActivity.getIntent(getContext(), libaoEntity, mEntrance + "+(礼包中心:最新)");
startActivityForResult(intent, LIBAO_SEARCH_REQUEST);
}
}