package com.gdg.miagegi.can2015.fragment; import android.app.ProgressDialog; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.widget.Toast; import com.gdg.miagegi.can2015.FeedDetailsActivity; import com.gdg.miagegi.can2015.R; import com.gdg.miagegi.can2015.adapter.FeedListAdapter; import com.gdg.miagegi.can2015.event.NetworkOperationEvent; import com.gdg.miagegi.can2015.model.Feed; import com.gdg.miagegi.can2015.service.DataFetchService; import com.gdg.miagegi.can2015.utils.BusProvider; import com.gdg.miagegi.can2015.utils.Constants; import com.squareup.otto.Subscribe; import java.util.ArrayList; import java.util.List; /** * Created by macbookpro on 17/01/15. */ public class FeedListFragment extends Fragment { private ProgressDialog progressDialog; private FeedListAdapter mAdapter = null; private RecyclerView mRecyclerView; private RecyclerView.LayoutManager mLayoutManager; List<Feed> feeds = new ArrayList<Feed>(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) { View v = inflater.inflate(R.layout.activity_feed_list, container, false); mRecyclerView = (RecyclerView)v.findViewById(R.id.my_recycler_view); mRecyclerView.setHasFixedSize(true); // use a linear layout manager mLayoutManager = new LinearLayoutManager(getActivity()); mRecyclerView.setLayoutManager(mLayoutManager); feeds = Feed.findAll(getActivity()); mAdapter = new FeedListAdapter(getActivity(), feeds); mAdapter.setItemClickListener(new FeedListAdapter.onItemClickListener() { @Override public void onItemClicked(View view, int position) { Intent intent = new Intent(getActivity(), FeedDetailsActivity.class); intent.putExtra(Constants.EXTRA_FEED, feeds.get(position)); startActivity(intent); } }); mRecyclerView.setAdapter(mAdapter); mRecyclerView.setItemAnimator(new DefaultItemAnimator()); //Toast.makeText(mContext, ""+feeds.size(), 3000).show(); if (feeds.size() < 1) { getActivity().startService(new Intent(getActivity(), DataFetchService.class)); } return v; } @Override public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.menu_feed_list, menu); } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); //noinspection SimplifiableIfStatement if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } @Subscribe public void onNetworkOperationEvent(NetworkOperationEvent event) { // Log.i(LOG_TAG, "I received an event : " + event.getClass().getName() + " : " + event.getMessage()); if (event.hasStarted()) { Toast.makeText(getActivity(), "Actualisation en cours", Toast.LENGTH_LONG).show(); } else if (event.hasFinishedOne()) { // hideProgressBar(); } else if (event.hasFinishedAll()) { feeds.clear(); feeds.addAll(Feed.findAll(getActivity())); mAdapter.notifyDataSetChanged(); } else if (event.hasFailed()) { // hideProgressBar(); Toast.makeText(getActivity(), event.getMessage(), Toast.LENGTH_LONG).show(); } } @Override public void onPause() { super.onPause(); BusProvider.getInstance().unregister(this); } @Override public void onResume() { super.onResume(); BusProvider.getInstance().register(this); } }