171 lines
5.5 KiB
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);
|
|
}
|
|
}
|