package com.likebamboo.osa.android.ui;
import android.content.Intent;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.view.View;
import com.likebamboo.osa.android.R;
import com.likebamboo.osa.android.entity.AuthorList;
import com.likebamboo.osa.android.impl.BaseOnItemClickListener;
import com.likebamboo.osa.android.request.JsonRequest;
import com.likebamboo.osa.android.request.RequestManager;
import com.likebamboo.osa.android.request.RequestParams;
import com.likebamboo.osa.android.request.RequestUrl;
import com.likebamboo.osa.android.ui.adapter.AuthorAdapter;
import com.likebamboo.osa.android.ui.fragments.AuthorInfoFragment;
import com.likebamboo.osa.android.ui.nav.ActivityNavigator;
import com.likebamboo.osa.android.ui.view.fastscroll.FastScroller;
import butterknife.InjectView;
/**
* 作者界面
*/
public class AuthorActivity extends EndlessActivity<AuthorList> {
@InjectView(R.id.recycler_view)
RecyclerView mAuthorList = null;
/**
* 适配器
*/
private AuthorAdapter mAuthorAdapter = null;
/**
* 布局管理器
*/
private LinearLayoutManager mLayoutManager;
/**
* 加载更多,状态记录
*/
private int pastVisiblesItems, visibleItemCount, totalItemCount;
@Override
protected int getLayoutId() {
return R.layout.activity_author;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// 初始化
initView();
addListener();
// 加载数据
loadDatas();
}
/**
* 初始化控件
*/
private void initView() {
// 初始化适配器
mAuthorAdapter = new AuthorAdapter(this);
// 添加footer
mAuthorAdapter.setFooter(mFooterView);
// 设置适配器
mAuthorList.setAdapter(mAuthorAdapter);
// recyclerView布局管理器
mLayoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
mAuthorList.setLayoutManager(mLayoutManager);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
// fastScroller
FastScroller fastScroller = (FastScroller) findViewById(R.id.fastscroller);
fastScroller.setRecyclerView(mAuthorList);
} else {
findViewById(R.id.fastscroller).setVisibility(View.GONE);
}
}
/**
* 添加监听器
*/
private void addListener() {
// item Onclick
mAuthorAdapter.setOnItemClickListener(new BaseOnItemClickListener<AuthorList.Author>() {
@Override
public void onItemClick(int postion, AuthorList.Author item) {
if (item == null) {
return;
}
// 开始搜索
Intent i = new Intent(AuthorActivity.this, AuthorBlogActivity.class);
// 搜索关键字
i.putExtra(AuthorBlogActivity.EXTRA_AUTHOR_NAME, item.getName());
// 设置不显示抽屉导航
i.putExtra(NavigationActivity.EXTRA_SHOULD_DISABLE_DRAWER, true);
// 设置标题
i.putExtra(EXTRA_TITLE, item.getName());
ActivityNavigator.withAnim(i, ActivityNavigator.AnimationMode.DEFAULT).startActivity(AuthorActivity.this, i);
}
});
// item info click
mAuthorAdapter.setOnInfoClickListner(new AuthorAdapter.IOnAuthorInfoClickListener() {
@Override
public void onAuthorInfoClick(int position, AuthorList.Author author) {
if (author == null) {
return;
}
AuthorInfoFragment fragment = AuthorInfoFragment.newInstance(author);
fragment.show(getSupportFragmentManager(), "dialog");
}
@Override
public void onAuthorBlogLinkClick(int position, String blogLink) {
if (TextUtils.isEmpty(blogLink)) {
return;
}
// 跳转到Web页面
ActivityNavigator.openWebView(AuthorActivity.this, null, blogLink);
}
});
// 滚动加载更多
mAuthorList.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
visibleItemCount = mLayoutManager.getChildCount();
totalItemCount = mLayoutManager.getItemCount();
pastVisiblesItems = mLayoutManager.findFirstVisibleItemPosition();
// 加载更多
if ((visibleItemCount + pastVisiblesItems) >= totalItemCount) {
loadDatas();
}
}
});
}
@Override
protected void loadDatas(RequestParams params) {
// 加载数据
RequestManager.addRequest(new JsonRequest<AuthorList>(RequestUrl.AUTHOR_URL, AuthorList.class, params, responseListener(), errorListener()),
this.getClass().getName());
}
@Override
protected void doOnSuccess(AuthorList data) {
if (data == null || data.getList() == null || data.getList().isEmpty()) {
showMessage(data);
return;
}
++mPageIndex;
if (data.getList().size() < mPageSize) {
mHasMore = false;
} else {
mHasMore = true;
}
mAuthorAdapter.addDatas(data.getList());
}
@Override
protected void reset() {
super.reset();
if (mAuthorAdapter != null) {
mAuthorAdapter.clear();
}
}
}