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.common.view.VerticalItemDecoration; import com.gh.gamecenter.adapter.ToolBoxRvAdapter; import butterknife.BindView; import butterknife.OnClick; /** * Created by khy on 24/05/17. */ public class ToolBoxActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener, ToolBoxRvAdapter.OnSearchCallBackListener { @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 mSearckKey; // 记录搜索关键字 Runnable runnable = new Runnable() { @Override public void run() { changeAdapter(true); } }; @NonNull public static Intent getIntent(Context context) { Intent intent = new Intent(context, ToolBoxActivity.class); return intent; } @Override protected int getLayoutId() { return R.layout.activity_toolbox; } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); initTitle("光环工具箱"); mRefresh.setColorSchemeResources(R.color.theme); mRefresh.setOnRefreshListener(this); mLayoutManager = new LinearLayoutManager(this); mToolboxRv.setLayoutManager(mLayoutManager); mRvAdapter = new ToolBoxRvAdapter(this, this, ToolBoxActivity.this, mIsSearch, mSearckKey); 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(mIsSearch, mRvAdapter.dataSize()); } } } }); } @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, 2, null, null); } } } @Override public void loadDone() { super.loadDone(); mRefresh.setRefreshing(false); mNoneData.setVisibility(View.GONE); mNoConnection.setVisibility(View.GONE); mLoading.setVisibility(View.GONE); } @Override public void loadEmpty() { super.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() { super.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; mSearckKey = searchKey; changeAdapter(false); } private void changeAdapter(boolean isRefresh) { if (mIsSearch) { mRvAdapter = new ToolBoxRvAdapter(this, this, this, mIsSearch, mSearckKey); } else { if (mNormalRvAdapter != null && !isRefresh) { mRvAdapter = mNormalRvAdapter; } else { mRvAdapter = new ToolBoxRvAdapter(this, this, this, mIsSearch, null); mNormalRvAdapter = mRvAdapter; } } mToolboxRv.setAdapter(mRvAdapter); } }