package io.bxbxbai.zhuanlan.ui; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.AppBarLayout; import android.support.design.widget.CollapsingToolbarLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.text.TextUtils; import android.view.View; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.TextView; import butterknife.Bind; import butterknife.ButterKnife; import com.bumptech.glide.Glide; import io.bxbxbai.common.Tips; import io.bxbxbai.common.utils.CommonExecutor; import io.bxbxbai.zhuanlan.R; import io.bxbxbai.zhuanlan.adapter.PostListAdapter; import io.bxbxbai.zhuanlan.bean.Post; import io.bxbxbai.zhuanlan.bean.UserEntity; import io.bxbxbai.zhuanlan.core.Api; import io.bxbxbai.zhuanlan.core.SimpleCallback; import io.bxbxbai.zhuanlan.core.ZhuanLanApi; import io.bxbxbai.zhuanlan.utils.RecyclerEndlessScrollListener; import io.bxbxbai.zhuanlan.utils.Utils; import java.util.List; /** * @author bxbxbai */ public class PostListActivity extends BaseActivity { private static final String KEY_USER = "_user"; @Bind(R.id.recycler_view) protected RecyclerView recyclerView; // @Bind(R.id.v_loading) // protected CircularLoadingView mLoadingView; @Bind(R.id.app_bar) protected AppBarLayout appBarLayout; @Bind(R.id.head_layout) protected LinearLayout headerLayout; @Bind(R.id.collapsing_toolbar) protected CollapsingToolbarLayout collapsingToolbarLayout; @Bind(R.id.tv_name) protected TextView nameView; @Bind(R.id.tv_bio) protected TextView bioView; @Bind(R.id.tv_description) protected TextView descriptionView; @Bind(R.id.iv_avatar) protected ImageView avatarView; private PostListAdapter adapter; private UserEntity userEntity; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_post_list); ButterKnife.bind(this); // collapsingToolbarLayout.setContentScrim(new BitmapDrawable()); appBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() { @Override public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) { if (verticalOffset <= -headerLayout.getHeight() / 2) { collapsingToolbarLayout.setTitle(userEntity.getZhuanlanName()); } else { collapsingToolbarLayout.setTitle(" "); } } }); recyclerView.setLayoutManager(new LinearLayoutManager(this)); } @Override protected void onPostCreate(Bundle savedInstanceState) { super.onPostCreate(savedInstanceState); adapter = new PostListAdapter(this); recyclerView.setAdapter(adapter); userEntity = getIntent().getParcelableExtra(KEY_USER); String name = userEntity.getZhuanlanName(); if (!TextUtils.isEmpty(name)) { setTitle(name); } recyclerView.addOnScrollListener(new RecyclerEndlessScrollListener() { @Override public void onLoadMore(int page, int var2) { requestPostList(page - 1); } }); requestPostList(0); nameView.setText(userEntity.getZhuanlanName()); descriptionView.setText(userEntity.getDescription()); String picUrl = Utils.getAuthorAvatarUrl(userEntity.getAvatarTemplate(), userEntity.getAvatarId(), ZhuanLanApi.PIC_SIZE_XL); Glide.with(this).load(picUrl).crossFade().into(avatarView); } private void addPosts(List<Post> posts) { if (posts.size() == 0) { Tips.showToast("没有数据了"); } recyclerView.setVisibility(View.VISIBLE); adapter.addAllItems(posts); } public void requestPostList(int page) { int offset = page * ZhuanLanApi.DEFAULT_COUNT; Api api = ZhuanLanApi.getZhuanlanApi(); api.getPosts(userEntity.getSlug(), ZhuanLanApi.DEFAULT_COUNT, offset).enqueue(new SimpleCallback<List<Post>>() { @Override public void onResponse(List<Post> posts, int code, String msg) { addPosts(posts); } }); } public static boolean start(final Context context, UserEntity userEntity) { final Intent intent = new Intent(); intent.setClass(context, PostListActivity.class); intent.putExtra(KEY_USER, userEntity); CommonExecutor.MAIN_HANDLER.postDelayed(new Runnable() { @Override public void run() { context.startActivity(intent); } }, 420); return true; } }