186 lines
5.8 KiB
Java
186 lines
5.8 KiB
Java
package com.gh.gamecenter;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.os.Bundle;
|
|
import android.support.annotation.NonNull;
|
|
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 android.widget.TextView;
|
|
|
|
import com.gc.materialdesign.views.ProgressBarCircularIndeterminate;
|
|
import com.gh.base.BaseActivity;
|
|
import com.gh.base.OnRequestCallBackListener;
|
|
import com.gh.common.util.EntranceUtils;
|
|
import com.gh.common.view.VerticalItemDecoration;
|
|
import com.gh.gamecenter.adapter.ToolBoxRvAdapter;
|
|
import com.gh.gamecenter.suggest.SuggestType;
|
|
|
|
import butterknife.BindView;
|
|
import butterknife.OnClick;
|
|
|
|
/**
|
|
* Created by khy on 24/05/17.
|
|
*/
|
|
|
|
public class ToolBoxActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener,
|
|
ToolBoxRvAdapter.OnSearchCallBackListener, OnRequestCallBackListener {
|
|
|
|
@BindView(R.id.toolbox_rv)
|
|
RecyclerView mToolboxRv;
|
|
@BindView(R.id.reuse_none_data)
|
|
LinearLayout mNoneData;
|
|
@BindView(R.id.reuse_tv_none_data)
|
|
TextView mNoneDataTv;
|
|
@BindView(R.id.reuse_no_connection)
|
|
LinearLayout mNoConnection;
|
|
@BindView(R.id.toolbox_refresh)
|
|
SwipeRefreshLayout mRefresh;
|
|
@BindView(R.id.toolbox_loading)
|
|
ProgressBarCircularIndeterminate mLoading;
|
|
|
|
private LinearLayoutManager mLayoutManager;
|
|
private ToolBoxRvAdapter mRvAdapter;
|
|
private ToolBoxRvAdapter mNormalRvAdapter;
|
|
|
|
|
|
private boolean mIsSearch; // 记录页面状态 搜索页面/普通页面
|
|
private String mSearchKey; // 记录搜索关键字
|
|
|
|
Runnable runnable = new Runnable() {
|
|
@Override
|
|
public void run() {
|
|
changeAdapter(true);
|
|
}
|
|
};
|
|
|
|
@NonNull
|
|
public static Intent getIntent(Context context, String entrance) {
|
|
Intent intent = new Intent(context, ToolBoxActivity.class);
|
|
intent.putExtra(EntranceUtils.KEY_ENTRANCE, entrance);
|
|
return intent;
|
|
}
|
|
|
|
|
|
@Override
|
|
protected int getLayoutId() {
|
|
return R.layout.activity_toolbox;
|
|
}
|
|
|
|
@Override
|
|
protected void onCreate(Bundle savedInstanceState) {
|
|
super.onCreate(savedInstanceState);
|
|
setNavigationTitle("光环工具箱");
|
|
|
|
mRefresh.setColorSchemeResources(R.color.theme);
|
|
mRefresh.setOnRefreshListener(this);
|
|
|
|
|
|
mLayoutManager = new LinearLayoutManager(this);
|
|
mToolboxRv.setLayoutManager(mLayoutManager);
|
|
mRvAdapter = new ToolBoxRvAdapter(this, this, ToolBoxActivity.this, mIsSearch, mSearchKey);
|
|
mToolboxRv.addItemDecoration(new VerticalItemDecoration(this, 8, false));
|
|
mToolboxRv.setAdapter(mRvAdapter);
|
|
|
|
mNormalRvAdapter = mRvAdapter;
|
|
|
|
mToolboxRv.addOnScrollListener(new RecyclerView.OnScrollListener() {
|
|
@Override
|
|
public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
|
|
super.onScrollStateChanged(recyclerView, newState);
|
|
if (newState == RecyclerView.SCROLL_STATE_IDLE
|
|
&& mLayoutManager.findLastVisibleItemPosition() + 1 == mRvAdapter.getItemCount()) {
|
|
if (!mRvAdapter.isOver() && !mRvAdapter.isLoading() && !mRvAdapter.isNetworkError()) {
|
|
mRvAdapter.loadData();
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
|
|
@OnClick({R.id.reuse_no_connection, R.id.reuse_none_data})
|
|
public void onClick(View view) {
|
|
if (view.getId() == R.id.reuse_no_connection) {
|
|
mLoading.setVisibility(View.VISIBLE);
|
|
mNoConnection.setVisibility(View.GONE);
|
|
mLoading.postDelayed(runnable, 1000);
|
|
} else if (view.getId() == R.id.reuse_none_data) {
|
|
if (mIsSearch) {
|
|
// TODO反馈
|
|
SuggestionActivity.startSuggestionActivity(this, SuggestType.functionSuggest, null, null);
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
@Override
|
|
public void loadDone() {
|
|
mRefresh.setRefreshing(false);
|
|
mNoneData.setVisibility(View.GONE);
|
|
mNoConnection.setVisibility(View.GONE);
|
|
mLoading.setVisibility(View.GONE);
|
|
|
|
}
|
|
|
|
@Override
|
|
public void loadDone(Object obj) {
|
|
|
|
}
|
|
|
|
@Override
|
|
public void loadEmpty() {
|
|
mRefresh.setRefreshing(false);
|
|
mNoneData.setVisibility(View.VISIBLE);
|
|
mNoConnection.setVisibility(View.GONE);
|
|
mLoading.setVisibility(View.GONE);
|
|
if (mIsSearch) {
|
|
mNoneDataTv.setText("未找到结果,点我反馈");
|
|
} else {
|
|
mNoneDataTv.setText(getResources().getString(R.string.game_empty));
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void loadError() {
|
|
mRefresh.setRefreshing(false);
|
|
mNoneData.setVisibility(View.GONE);
|
|
mNoConnection.setVisibility(View.VISIBLE);
|
|
mLoading.setVisibility(View.GONE);
|
|
}
|
|
|
|
@Override
|
|
public void onRefresh() {
|
|
mRefresh.postDelayed(runnable, 1000);
|
|
}
|
|
|
|
@Override
|
|
public void search(boolean isSearch, String searchKey) {
|
|
if (mNoneData.getVisibility() == View.VISIBLE) {
|
|
mNoneData.setVisibility(View.GONE);
|
|
}
|
|
if (isSearch) {
|
|
mLoading.setVisibility(View.VISIBLE);
|
|
}
|
|
mIsSearch = isSearch;
|
|
mSearchKey = searchKey;
|
|
changeAdapter(false);
|
|
}
|
|
|
|
private void changeAdapter(boolean isRefresh) {
|
|
if (mIsSearch) {
|
|
mRvAdapter = new ToolBoxRvAdapter(this, this, this, mIsSearch, mSearchKey);
|
|
} else {
|
|
if (mNormalRvAdapter != null && !isRefresh) {
|
|
mRvAdapter = mNormalRvAdapter;
|
|
} else {
|
|
mRvAdapter = new ToolBoxRvAdapter(this, this, this, mIsSearch, null);
|
|
mNormalRvAdapter = mRvAdapter;
|
|
}
|
|
}
|
|
mToolboxRv.setAdapter(mRvAdapter);
|
|
}
|
|
}
|