package com.nabilhachicha.kc.items.itemlist;
import android.content.Intent;
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 com.nabilhachicha.kc.R;
import com.nabilhachicha.kc.data.Database;
import com.nabilhachicha.kc.home.DataLoaderHelper;
import com.nabilhachicha.kc.io.KcObservables;
import com.nabilhachicha.kc.items.ItemDetailActivity;
import com.nabilhachicha.kc.model.Venue;
import com.nabilhachicha.kc.service.BackendOperations;
import com.nabilhachicha.kc.view.BaseFragment;
import com.squareup.picasso.Picasso;
import java.util.List;
import javax.inject.Inject;
import retrofit.RestAdapter;
import rx.Observable;
import rx.schedulers.Schedulers;
public class ItemsFragment extends BaseFragment implements DataLoaderHelper.ContentFlow<List<Venue>> {
private static final String CATEGORY_KEY = "category";
@Inject
BackendOperations mBackendOperations;
@Inject
RestAdapter mRestAdapter;
@Inject
Database mDatabase;
@Inject
Picasso mPicasso;
private ItemsRecyclerAdapter mAdapter;
/**
* The recycle view
*/
private RecyclerView mRecyclerView;
private DataLoaderHelper mRxFlowHelper;
private String mCategory;
public static ItemsFragment newInstance(String category) {
ItemsFragment fragment = new ItemsFragment();
Bundle args = new Bundle();
args.putString(CATEGORY_KEY, category);
fragment.setArguments(args);
return fragment;
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCategory = getArguments().getString(CATEGORY_KEY);
mAdapter = new ItemsRecyclerAdapter(mPicasso);
mAdapter.SetOnItemClickListener(onItemClickListener);
}
@Override
public void onStart() {
super.onStart();
mRxFlowHelper.onStart();
}
@Override
public void onStop() {
mRxFlowHelper.onStop();
super.onStop();
}
ItemsRecyclerAdapter.OnItemClickListener onItemClickListener = venue -> {
Intent intent = new Intent(getActivity(), ItemDetailActivity.class);
intent.putExtra("item", venue);
startActivity(intent);
};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_item_list, container, false);
mRecyclerView = (RecyclerView) view.findViewById(R.id.item_list);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
mRecyclerView.setLayoutManager(linearLayoutManager);
return view;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
// Fetch remote data
mRecyclerView.setAdapter(mAdapter);
mRxFlowHelper = new DataLoaderHelper(this);
}
@Override
public void showError() {
}
@Override
public void showContent(List<Venue> data) {
mAdapter.replace(data);
}
@Override
public void updateContent(List<Venue> data) {
showContent(data);
}
@Override
public boolean isCacheAvailable() {
//return mDatabase.isEmpty();
return false;
}
@Override
public List<Venue> queryCache() {
return mDatabase.getVenues(mCategory);
}
@Override
public Observable<List<Venue>> queryBackend() {
return KcObservables.getItemsByCategory(mBackendOperations, mDatabase, mCategory).subscribeOn(Schedulers.io());
}
}