Advertisement
Guest User

Untitled

a guest
Jan 22nd, 2017
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.84 KB | None | 0 0
  1. package is.uncommon.playbook.sortedlist.part2;
  2.  
  3. import android.app.Fragment;
  4. import android.os.Bundle;
  5. import android.support.annotation.Nullable;
  6. import android.support.v7.widget.GridLayoutManager;
  7. import android.support.v7.widget.RecyclerView;
  8. import android.view.LayoutInflater;
  9. import android.view.View;
  10. import android.view.ViewGroup;
  11. import android.view.ViewTreeObserver;
  12. import android.widget.LinearLayout;
  13. import android.widget.TextView;
  14. import butterknife.BindView;
  15. import butterknife.ButterKnife;
  16. import butterknife.Unbinder;
  17. import is.uncommon.playbook.sortedlist.Article;
  18. import is.uncommon.playbook.sortedlist.R;
  19. import java.util.ArrayList;
  20. import java.util.Collections;
  21. import org.joda.time.DateTime;
  22. import org.joda.time.format.DateTimeFormat;
  23. import org.joda.time.format.DateTimeFormatter;
  24.  
  25. public class SortedListAddArticleFragment extends Fragment {
  26. public static final DateTimeFormatter dateTimeFormatter = DateTimeFormat.forPattern("MMM. d");
  27. private static final int DAYS_PRIOR = 20;
  28.  
  29. @BindView(R.id.linearLayout) LinearLayout linearLayoutContainer;
  30. @BindView(R.id.recycler) RecyclerView recyclerView;
  31.  
  32. private View rootView;
  33. private Unbinder unbinder;
  34. private ArrayList<Article> articleList = new ArrayList<>();
  35. private SortedListAddArticleAdapter adapter;
  36.  
  37. public static SortedListAddArticleFragment create() {
  38. return new SortedListAddArticleFragment();
  39. }
  40.  
  41. @Nullable @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,
  42. Bundle savedInstanceState) {
  43. rootView = inflater.inflate(R.layout.fragment_sortedlist_add_article, container, false);
  44. unbinder = ButterKnife.bind(this, rootView);
  45. setupSeeds();
  46. linearLayoutContainer.getViewTreeObserver()
  47. .addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
  48. @Override public void onGlobalLayout() {
  49. linearLayoutContainer.getViewTreeObserver().removeOnGlobalLayoutListener(this);
  50. setupShuffleContainer();
  51. }
  52. });
  53. recyclerView.setLayoutManager(new GridLayoutManager(getActivity(), 2));
  54. final ArrayList<Article> emptyList = new ArrayList<>();
  55. adapter = new SortedListAddArticleAdapter(emptyList);
  56. recyclerView.setAdapter(adapter);
  57. return rootView;
  58. }
  59.  
  60. private void setupShuffleContainer() {
  61. linearLayoutContainer.removeAllViews();
  62. Collections.shuffle(articleList);
  63. for (final Article article : articleList) {
  64. View itemView = LayoutInflater.from(getActivity())
  65. .inflate(R.layout.item_grid_article, linearLayoutContainer, false);
  66. ViewGroup.LayoutParams layoutParams = itemView.getLayoutParams();
  67. layoutParams.width = linearLayoutContainer.getHeight();
  68. layoutParams.height = linearLayoutContainer.getHeight();
  69. itemView.setLayoutParams(layoutParams);
  70. linearLayoutContainer.addView(itemView);
  71. TextView contentView = (TextView) itemView.findViewById(R.id.content);
  72. TextView dateView = (TextView) itemView.findViewById(R.id.date);
  73. TextView authorView = (TextView) itemView.findViewById(R.id.author);
  74. TextView categoryView = (TextView) itemView.findViewById(R.id.category);
  75.  
  76. contentView.setText(article.content());
  77. DateTime dateTime = new DateTime(article.publishedTime());
  78. dateView.setText(dateTime.toString(dateTimeFormatter));
  79. categoryView.setText(article.category());
  80. authorView.setText("By " + article.author());
  81. itemView.setOnClickListener(new View.OnClickListener() {
  82. @Override public void onClick(View view) {
  83. adapter.addArticle(article);
  84. }
  85. });
  86. }
  87. }
  88.  
  89. private void setupSeeds() {
  90. for (int i = 0; i < DAYS_PRIOR; i++) {
  91. articleList.add(
  92. Article.builder().publishedTime(DateTime.now().minusDays(i).getMillis()).build());
  93. }
  94. }
  95.  
  96. @Override public void onDestroyView() {
  97. unbinder.unbind();
  98. super.onDestroyView();
  99. }
  100. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement