Advertisement
Guest User

Untitled

a guest
Jan 19th, 2017
70
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.44 KB | None | 0 0
  1. package com.company.user.recyclerviewdecorationtest;
  2.  
  3. import android.graphics.Rect;
  4. import android.support.v7.app.AppCompatActivity;
  5. import android.os.Bundle;
  6. import android.support.v7.widget.DividerItemDecoration;
  7. import android.support.v7.widget.LinearLayoutManager;
  8. import android.support.v7.widget.RecyclerView;
  9. import android.view.Menu;
  10. import android.view.MenuItem;
  11. import android.view.View;
  12. import android.view.ViewGroup;
  13. import android.widget.TextView;
  14.  
  15. import java.util.Arrays;
  16. import java.util.Random;
  17.  
  18. public class MainActivity extends AppCompatActivity {
  19. public static class ViewHolder extends RecyclerView.ViewHolder {
  20. public ViewHolder(View itemView) {
  21. super(itemView);
  22. }
  23. }
  24.  
  25. public class FooterDecoration extends RecyclerView.ItemDecoration {
  26. @Override
  27. public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
  28. int position = parent.getChildAdapterPosition(view);
  29. if (position == state.getItemCount() - 1) {
  30. outRect.set(0, 0, 0, 100);
  31. }
  32. }
  33. }
  34.  
  35. private String[] testList;
  36. private RecyclerView.Adapter<ViewHolder> modelAdapter;
  37.  
  38. private static final String alphabet = "0123456789 ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz";
  39. private static String[] generateTestData() {
  40. Random random = new Random();
  41.  
  42. int count = 10;// + random.nextInt(100);
  43. String[] dataList = new String[count];
  44. for (int i = 0; i < count; i++) {
  45. int length = 10 + random.nextInt(100);
  46. StringBuilder stringBuilder = new StringBuilder(length);
  47.  
  48. for (int j = 0; j < length; j++) {
  49. stringBuilder.append(alphabet.charAt(random.nextInt(alphabet.length())));
  50. }
  51.  
  52. dataList[i] = stringBuilder.toString();
  53. }
  54.  
  55. return dataList;
  56. }
  57.  
  58. private static void truncateTestDataItems(String[] dataList) {
  59. for (int i = 0; i < dataList.length; i++) {
  60. if (!dataList[i].isEmpty()) {
  61. dataList[i] = dataList[i].substring(0, dataList[i].length() - 1);
  62. }
  63. }
  64. }
  65.  
  66. @Override
  67. protected void onCreate(Bundle savedInstanceState) {
  68. super.onCreate(savedInstanceState);
  69. setContentView(R.layout.activity_main);
  70.  
  71. testList = generateTestData();
  72.  
  73. RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recycler_view);
  74. recyclerView.setHasFixedSize(true);
  75.  
  76. LinearLayoutManager layoutManager = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
  77. recyclerView.setLayoutManager(layoutManager);
  78.  
  79. DividerItemDecoration itemDecoration = new DividerItemDecoration(this, layoutManager.getOrientation());
  80. recyclerView.addItemDecoration(itemDecoration);
  81.  
  82. FooterDecoration footerDecoration = new FooterDecoration();
  83. recyclerView.addItemDecoration(footerDecoration);
  84.  
  85. modelAdapter = new RecyclerView.Adapter<ViewHolder>() {
  86. @Override
  87. public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
  88. View root = getLayoutInflater().inflate(R.layout.list_item, parent, false);
  89. return new ViewHolder(root);
  90. }
  91.  
  92. @Override
  93. public void onBindViewHolder(ViewHolder holder, int position) {
  94. TextView textView = (TextView) holder.itemView.findViewById(R.id.text_view);
  95. textView.setText(testList[position]);
  96. }
  97.  
  98. @Override
  99. public int getItemCount() {
  100. return testList.length;
  101. }
  102. };
  103. recyclerView.setAdapter(modelAdapter);
  104. }
  105.  
  106. @Override
  107. public boolean onCreateOptionsMenu(Menu menu) {
  108. menu.add("NEW").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
  109. menu.add("REMOVE").setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
  110.  
  111. return super.onCreateOptionsMenu(menu);
  112. }
  113.  
  114. @Override
  115. public boolean onOptionsItemSelected(MenuItem item) {
  116. if (item.getTitle().equals("NEW")) {
  117. testList = generateTestData();
  118. modelAdapter.notifyDataSetChanged();
  119.  
  120. return true;
  121. }
  122.  
  123. if (item.getTitle().equals("REMOVE")) {
  124. testList = Arrays.copyOfRange(testList, 0, testList.length - 1);
  125. modelAdapter.notifyItemRemoved(modelAdapter.getItemCount() - 1);
  126.  
  127. return true;
  128. }
  129.  
  130. return super.onOptionsItemSelected(item);
  131. }
  132. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement