package com.gdg.miagegi.can2015.fragment; import java.util.ArrayList; import java.util.List; import com.gdg.miagegi.can2015.R; import com.gdg.miagegi.can2015.activity.SocialDetailsActivity; import com.gdg.miagegi.can2015.adapter.SocialListAdapter; import com.gdg.miagegi.can2015.event.NetworkOperationEvent; import com.gdg.miagegi.can2015.model.Feed; import com.gdg.miagegi.can2015.model.Social; import com.gdg.miagegi.can2015.service.DataFetchService; import com.gdg.miagegi.can2015.service.SocialFetchService; import com.gdg.miagegi.can2015.utils.BusProvider; import com.squareup.otto.Subscribe; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ListView; import android.widget.Toast; public class SocialListFragment extends Fragment{ @Override public void onPause() { // TODO Auto-generated method stub super.onPause(); BusProvider.getInstance().unregister(this); } @Override public void onResume() { // TODO Auto-generated method stub super.onResume(); BusProvider.getInstance().register(this); } private SocialListAdapter mAdapter = null; private Context mContext; private int mCurrentPosition; private ListView mListView; private List<Social> mSocials = new ArrayList<Social>(); public SocialListFragment() { super(); } public static String ARGS_POSITION = "position"; @Override public void onCreate(Bundle savedInstanceState) { mContext = getActivity(); if (getArguments() != null) { mCurrentPosition = getArguments().getInt(ARGS_POSITION); } else { mCurrentPosition = 0; } super.onCreate(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View rootView = inflater.inflate(R.layout.fragment_list_social, container, false); if (mCurrentPosition == 0) { mSocials.clear(); mSocials.addAll(Social.findAllByType(mContext, "Twitter")); } if(mAdapter == null){ mAdapter = new SocialListAdapter(mContext, mSocials); }else{ mAdapter.notifyDataSetChanged(); } if (mListView == null) { mListView = new ListView(mContext); } mListView.setAdapter(mAdapter); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { // TODO Auto-generated method stub getActivity().startActivity(new Intent(getActivity(), SocialDetailsActivity.class) .putExtra("socialId", mAdapter.getItem(position).id)); } }); ((ViewGroup) rootView).removeAllViews(); ((ViewGroup) rootView).addView(mListView); if (mSocials.size() < 1) { getActivity().startService(new Intent(getActivity(), SocialFetchService.class)); } return rootView; } public static SocialListFragment newInstance(int defaultPosition) { SocialListFragment f = new SocialListFragment(); Bundle args = new Bundle(); args.putInt(ARGS_POSITION, defaultPosition); f.setArguments(args); return (f); } @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()) { mSocials.clear(); mSocials.addAll(Social.findAllByType(mContext, "Twitter")); mAdapter.notifyDataSetChanged(); } else if (event.hasFailed()) { // hideProgressBar(); Toast.makeText(getActivity(), event.getMessage(), Toast.LENGTH_LONG).show(); } } }