Skip to content

Instantly share code, notes, and snippets.

@NoNews
Created December 19, 2016 17:13
Show Gist options
  • Save NoNews/07b2d146fe3a30877c9a20fbfd41c64c to your computer and use it in GitHub Desktop.
Save NoNews/07b2d146fe3a30877c9a20fbfd41c64c to your computer and use it in GitHub Desktop.
package ru.techmas.touchdriver.fragments;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import butterknife.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import ru.techmas.touchdriver.Const;
import ru.techmas.touchdriver.R;
import ru.techmas.touchdriver.adapter.OrderListAdapter;
import ru.techmas.touchdriver.api.models.OrderDTO;
import ru.techmas.touchdriver.presenter.MainActivityPresenter;
import ru.techmas.touchdriver.view.OrdersView;
import ru.techmas.touchdriver.presenter.OrdersPresenter;
import com.arellomobile.mvp.MvpFragment;
import com.arellomobile.mvp.presenter.InjectPresenter;
import com.arellomobile.mvp.presenter.ProvidePresenter;
import java.util.ArrayList;
public class OrdersFragment extends BaseFragment implements OrdersView {
private static final int LAYOUT = R.layout.fragment_orders;
//@formatter:off
@InjectPresenter OrdersPresenter ordersPresenter;
@BindView(R.id.rvOrders) RecyclerView rvOrders;
//@formatter:on
private OrderListAdapter adapter;
private View view;
public static OrdersFragment newInstance() {
OrdersFragment fragment = new OrdersFragment();
Bundle args = new Bundle();
fragment.setArguments(args);
fragment.setRetainInstance(true);
return fragment;
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onStart() {
super.onStart();
}
@Override
public View onCreateView(final LayoutInflater inflater, final ViewGroup container,
final Bundle savedInstanceState) {
view = inflater.inflate(LAYOUT, container, false);
ButterKnife.bind(this, view);
return view;
}
@Override
public void setupRecyclerView() {
adapter = new OrderListAdapter(getContext());
rvOrders.setLayoutManager(new LinearLayoutManager(getContext()));
rvOrders.setAdapter(adapter);
}
@Override
public void setNewOrders(ArrayList<OrderDTO> orders) {
adapter.updateOrders(orders);
}
@OnClick(R.id.ivRefresh)
@Override
public void updateOrders() {
ordersPresenter.orderRequest();
}
}
package ru.techmas.touchdriver.presenter;
import ru.techmas.touchdriver.App;
import ru.techmas.touchdriver.api.RestApi;
import ru.techmas.touchdriver.api.StatusResponse;
import ru.techmas.touchdriver.api.models.DriverDTO;
import ru.techmas.touchdriver.api.models.OrderDTO;
import ru.techmas.touchdriver.models.EventMessage;
import ru.techmas.touchdriver.view.OrdersView;
import rx.android.schedulers.AndroidSchedulers;
import rx.schedulers.Schedulers;
import com.arellomobile.mvp.InjectViewState;
import com.arellomobile.mvp.MvpPresenter;
import java.util.ArrayList;
import javax.inject.Inject;
@InjectViewState
public class OrdersPresenter extends MvpPresenter<OrdersView> {
//@formatter:off
@Inject RestApi restApi;
@Inject DriverDTO driver;
//@formatter:on
public OrdersPresenter() {
App.getAppComponent().inject(this);
getViewState().setupRecyclerView();
orderRequest();
}
public void orderRequest() {
restApi.orderEndPoint
.getOrders(driver.getToken())
.observeOn(AndroidSchedulers.mainThread())
.subscribeOn(Schedulers.io())
.subscribe(this::successGetOrder, this::handleError);
}
private void successGetOrder(StatusResponse<ArrayList<OrderDTO>> response) {
getViewState().setNewOrders(response.getData());
}
private void handleError(Throwable throwable) {
}
}
public interface OrdersView extends MvpView {
@StateStrategyType(OneExecutionStateStrategy.class)
void setNewOrders(ArrayList<OrderDTO> orders);
@StateStrategyType(OneExecutionStateStrategy.class)
void updateOrders();
@StateStrategyType(OneExecutionStateStrategy.class)
void setupRecyclerView();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment