Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class CurrentListRecyclerAdapter extends RecyclerView.Adapter<CurrentListRecyclerAdapter.ViewHolder> {
- protected ArrayList<Order> dataset;
- private ViewHolder.ViewHolderClickListener mListener;
- public CurrentListRecyclerAdapter(ViewHolder.ViewHolderClickListener listener) {
- super();
- mListener = listener;
- dataset = new ArrayList<>();
- }
- @Override
- public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
- View convertView = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.order_list_item, viewGroup, false);
- return new ViewHolder(convertView, mListener);
- }
- public void swap(ArrayList<Order> orders) {
- // dataset.clear();
- // notifyItemRangeRemoved(0, getItemCount());
- dataset = new ArrayList<>(orders);
- Collections.sort(dataset, new Comparator<Order>() {
- @Override
- public int compare(Order lhs, Order rhs) {
- return (int) lhs.getCalculatedDistance() - (int) rhs.getCalculatedDistance();
- }
- });
- notifyItemRangeChanged(0, getItemCount());
- }
- @Override
- public void onBindViewHolder(ViewHolder viewHolder, int i) {
- Order order = (Order) getItem(i);
- viewHolder.orderView.setOrder(order);
- }
- public void add(final Order order) {
- int pos = 0;
- while (pos < dataset.size() && dataset.get(pos).getCalculatedDistance() < order.getCalculatedDistance()) {
- pos++;
- }
- dataset.add(pos, order);
- notifyItemInserted(pos);
- }
- public void insert(final Order order) {
- int position = getPositionById(order);
- if (position != -1) {
- Order current = dataset.get(position);
- if ((int) current.getCalculatedDistance() != (int) order.getCalculatedDistance()) {
- dataset.set(position, order);
- Collections.sort(dataset, new Comparator<Order>() {
- @Override
- public int compare(Order lhs, Order rhs) {
- return (int) (lhs.getCalculatedDistance() - rhs.getCalculatedDistance());
- }
- });
- notifyItemRangeChanged(0, getItemCount());
- } else {
- dataset.set(position, order);
- notifyItemChanged(position);
- }
- }
- }
- public void remove(Order order) {
- final int position = getPositionById(order);
- if (position != -1) {
- dataset.remove(position);
- notifyItemRemoved(position);
- }
- }
- public int getPositionById(final Order item) {
- for (int i = 0; i < dataset.size(); i++) {
- if (item.getId().equals(dataset.get(i).getId())) {
- return i;
- }
- }
- return -1;
- }
- @Override
- public int getItemCount() {
- return dataset.size();
- }
- public Object getItem(final int position) {
- return dataset.get(position);
- }
- @Override
- public long getItemId(int position) {
- return position;
- }
- public static class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
- // each data item is just a string in this case
- public OrderView orderView;
- public ViewHolderClickListener mListener;
- public ViewHolder(View v, ViewHolderClickListener listener) {
- super(v);
- mListener = listener;
- orderView = (OrderView) v;
- orderView.setOnClickListener(this);
- }
- @Override
- public void onClick(View view) {
- mListener.onClick(view);
- }
- public static interface ViewHolderClickListener {
- void onClick(View view);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement