Advertisement
Guest User

Untitled

a guest
Aug 4th, 2015
182
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.74 KB | None | 0 0
  1. public class CurrentListRecyclerAdapter extends RecyclerView.Adapter<CurrentListRecyclerAdapter.ViewHolder> {
  2.  
  3. protected ArrayList<Order> dataset;
  4. private ViewHolder.ViewHolderClickListener mListener;
  5.  
  6. public CurrentListRecyclerAdapter(ViewHolder.ViewHolderClickListener listener) {
  7. super();
  8. mListener = listener;
  9. dataset = new ArrayList<>();
  10. }
  11.  
  12. @Override
  13. public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
  14. View convertView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.order_list_item, viewGroup, false);
  15. return new ViewHolder(convertView, mListener);
  16. }
  17.  
  18. public void swap(ArrayList<Order> orders) {
  19. // dataset.clear();
  20. // notifyItemRangeRemoved(0, getItemCount());
  21.  
  22. dataset = new ArrayList<>(orders);
  23. Collections.sort(dataset, new Comparator<Order>() {
  24. @Override
  25. public int compare(Order lhs, Order rhs) {
  26. return (int) lhs.getCalculatedDistance() - (int) rhs.getCalculatedDistance();
  27. }
  28. });
  29. notifyItemRangeChanged(0, getItemCount());
  30. }
  31.  
  32.  
  33. @Override
  34. public void onBindViewHolder(ViewHolder viewHolder, int i) {
  35. Order order = (Order) getItem(i);
  36. viewHolder.orderView.setOrder(order);
  37. }
  38.  
  39. public void add(final Order order) {
  40. int pos = 0;
  41. while (pos < dataset.size() && dataset.get(pos).getCalculatedDistance() < order.getCalculatedDistance()) {
  42. pos++;
  43. }
  44. dataset.add(pos, order);
  45. notifyItemInserted(pos);
  46. }
  47.  
  48. public void insert(final Order order) {
  49. int position = getPositionById(order);
  50. if (position != -1) {
  51. Order current = dataset.get(position);
  52. if ((int) current.getCalculatedDistance() != (int) order.getCalculatedDistance()) {
  53. dataset.set(position, order);
  54. Collections.sort(dataset, new Comparator<Order>() {
  55. @Override
  56. public int compare(Order lhs, Order rhs) {
  57. return (int) (lhs.getCalculatedDistance() - rhs.getCalculatedDistance());
  58. }
  59. });
  60. notifyItemRangeChanged(0, getItemCount());
  61. } else {
  62. dataset.set(position, order);
  63. notifyItemChanged(position);
  64. }
  65. }
  66. }
  67.  
  68. public void remove(Order order) {
  69. final int position = getPositionById(order);
  70. if (position != -1) {
  71. dataset.remove(position);
  72. notifyItemRemoved(position);
  73. }
  74. }
  75.  
  76. public int getPositionById(final Order item) {
  77. for (int i = 0; i < dataset.size(); i++) {
  78. if (item.getId().equals(dataset.get(i).getId())) {
  79. return i;
  80. }
  81. }
  82. return -1;
  83. }
  84.  
  85. @Override
  86. public int getItemCount() {
  87. return dataset.size();
  88. }
  89.  
  90. public Object getItem(final int position) {
  91. return dataset.get(position);
  92. }
  93.  
  94. @Override
  95. public long getItemId(int position) {
  96. return position;
  97. }
  98.  
  99. public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
  100. // each data item is just a string in this case
  101. public OrderView orderView;
  102. public ViewHolderClickListener mListener;
  103.  
  104. public ViewHolder(View v, ViewHolderClickListener listener) {
  105. super(v);
  106. mListener = listener;
  107. orderView = (OrderView) v;
  108. orderView.setOnClickListener(this);
  109. }
  110.  
  111. @Override
  112. public void onClick(View view) {
  113. mListener.onClick(view);
  114. }
  115.  
  116. public static interface ViewHolderClickListener {
  117. void onClick(View view);
  118. }
  119. }
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement