package com.troy.xifan.activity; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.Toolbar; import android.view.MenuItem; import butterknife.BindView; import butterknife.ButterKnife; import com.chenenyu.router.Router; import com.chenenyu.router.annotation.Route; import com.jude.easyrecyclerview.EasyRecyclerView; import com.jude.easyrecyclerview.adapter.RecyclerArrayAdapter; import com.troy.xifan.R; import com.troy.xifan.adapter.StatusAdapter; import com.troy.xifan.config.Constants; import com.troy.xifan.http.HttpRequestFactory; import com.troy.xifan.http.callback.SimpleHttpRequestCallback; import com.troy.xifan.http.exception.ApiException; import com.troy.xifan.http.request.SearchRequest; import com.troy.xifan.model.response.StatusRes; import com.troy.xifan.util.UIUtils; import com.troy.xifan.util.Utils; import java.util.List; /** * Created by chenlongfei on 2017/1/11. */ @Route({ Constants.Router.TREND_STATUSES, Constants.Router.SCHEME + Constants.Router.TREND_STATUSES }) public class TrendStatusesActivity extends BaseActivity implements SwipeRefreshLayout.OnRefreshListener { public static final String BUNDLE_SEARCH_KEYWORD = "keyword"; @BindView(R.id.toolbar) Toolbar mToolbar; @BindView(R.id.recycler_view) EasyRecyclerView mRecyclerView; private String mMaxId; private String mKeyword; private StatusAdapter mStatusAdapter; @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_trend_statuses); ButterKnife.bind(this); Bundle bundle = getIntent().getExtras(); if (bundle != null) { mKeyword = bundle.getString(BUNDLE_SEARCH_KEYWORD); } if (mKeyword == null) { return; } initViews(); searchPublicTimeline(false); } @Override protected void initViews() { mToolbar.setTitle(mKeyword); mToolbar.setElevation(getResources().getDimension(R.dimen.elevation)); setSupportActionBar(mToolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); mStatusAdapter = new StatusAdapter(this); mStatusAdapter.setMore(R.layout.view_load_more, new RecyclerArrayAdapter.OnMoreListener() { @Override public void onMoreShow() { searchPublicTimeline(true); } @Override public void onMoreClick() { } }); mStatusAdapter.setError(R.layout.view_load_more_error, new RecyclerArrayAdapter.OnErrorListener() { @Override public void onErrorShow() { } @Override public void onErrorClick() { mStatusAdapter.resumeMore(); } }); mStatusAdapter.setNoMore(R.layout.view_no_more); mStatusAdapter.setOnItemClickListener(new RecyclerArrayAdapter.OnItemClickListener() { @Override public void onItemClick(int position) { StatusRes statusRes = mStatusAdapter.getItem(position); Bundle bundle = new Bundle(); bundle.putParcelable(StatusDetailActivity.EXTRA_STATUS, statusRes); Router.build(Constants.Router.STATUS_DETAIL) .extras(bundle) .go(TrendStatusesActivity.this); } }); mRecyclerView.setLayoutManager(new LinearLayoutManager(this)); mRecyclerView.setAdapterWithProgress(mStatusAdapter); mRecyclerView.setRefreshListener(this); mRecyclerView.setRefreshingColor(getResources().getIntArray(R.array.refreshing_color)); } private void searchPublicTimeline(final boolean loadMore) { SearchRequest request = new SearchRequest(); request.setQ(mKeyword); request.setMax_id(loadMore ? mMaxId : null); HttpRequestFactory.getInstance() .searchPublicTimeline(request, new SimpleHttpRequestCallback<List<StatusRes>>() { @Override public void onSuccess(List<StatusRes> responseData) { if (!loadMore) { mStatusAdapter.clear(); } mStatusAdapter.addAll(responseData); mStatusAdapter.notifyDataSetChanged(); mRecyclerView.setRefreshing(false); mMaxId = Utils.getMaxId(mStatusAdapter.getAllData()); } @Override public void onFail(ApiException apiException) { UIUtils.showToast(TrendStatusesActivity.this, apiException.getErrorMessage()); } }); } @Override public void onRefresh() { searchPublicTimeline(false); } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); break; } return super.onOptionsItemSelected(item); } }