package io.bxbxbai.zhuanlan.ui; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.view.View; import java.util.ArrayList; import java.util.Collections; import java.util.Comparator; import java.util.List; 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.core.SimpleCallback; import io.bxbxbai.zhuanlan.core.ZhuanLanApi; import io.bxbxbai.zhuanlan.utils.Utils; /** * @author bxbxbai */ public class RecentPostListActivity extends ListBaseActivity { private List<Post> postList; private PostListAdapter adapter; //按文章的发布时间排序 final Comparator<Post> mPublishTimeComparator = new Comparator<Post>() { @Override public int compare(Post lhs, Post rhs) { return Utils.compareTime(lhs.getPublishedTime(), rhs.getPublishedTime()); } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setTitle(R.string.recent_news); adapter = new PostListAdapter(this); recyclerView.setAdapter(adapter); postList = new ArrayList<>(); String[] ids = getResources().getStringArray(R.array.people_ids); for (int i = 0; ids != null && i < ids.length; i++) { sendRequest(ids[i], 0); } } public void sendRequest(String id, int page) { ZhuanLanApi.getZhuanlanApi() .getPosts(id, ZhuanLanApi.DEFAULT_COUNT, page * ZhuanLanApi.DEFAULT_COUNT) .enqueue(new SimpleCallback<List<Post>>() { @Override public void onResponse(List<Post> posts, int code, String msg) { onSuccess(posts); } }); } private void onSuccess(List<Post> posts) { if (postList.size() > 0) { recyclerView.setVisibility(View.VISIBLE); mLoadingView.setVisibility(View.GONE); } postList.addAll(filterNews(posts)); Collections.sort(postList, mPublishTimeComparator); adapter.setItemList(postList); } public List<Post> filterNews(List<Post> origin) { List<Post> list = new ArrayList<>(); for (Post post : origin) { if (Utils.withinDays(post.getPublishedTime(), 7)) { list.add(post); } } return list; } public static boolean start(final Context context) { final Intent intent = new Intent(); intent.setClass(context, RecentPostListActivity.class); CommonExecutor.MAIN_HANDLER.postDelayed(new Runnable() { @Override public void run() { context.startActivity(intent); } }, 300); return true; } }