package com.ved.musicmapapp.fragments; import java.util.ArrayList; import java.util.Collections; import android.app.Activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.Toast; import com.ved.musicmapapp.R; import com.ved.musicmapapp.Objects.User; import com.ved.musicmapapp.adapters.UserAdapter; import com.ved.musicmapapp.providers.GetAroundMeTask; import com.ved.musicmapapp.providers.GetUserArtistListTask; import com.ved.musicmapapp.providers.GetUserByTypeTask; import com.ved.musicmapapp.utils.Statics; import com.ved.musicmapapp.utils.UserSort; /** * * @author Quang * * show list of whom you could follow */ public class SimilarUserFragment extends Fragment implements GetUserByTypeTask.GetDataListener { private ListView list; private UserAdapter uAdapter; // private LinearLayout group_loadmore, group_find; // private boolean alertShowing = false; // private MusicMapApplication app; private ArrayList<User> users; private View mLoadingLayout; private View mResultLayout; private GetUserByTypeTask mTask; private Activity mContext; @Override public void onAttach(Activity activity) { // TODO Auto-generated method stub super.onAttach(activity); this.mContext = activity; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { super.onCreateView(inflater, container, savedInstanceState); return inflater.inflate(R.layout.activity_you_follow, container, false); } @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); if (null == mContext) return; if (!Statics.isNetworkConnected(getActivity())) { Toast.makeText(getActivity(), "Network unavaiable!", Toast.LENGTH_SHORT).show(); } list = (ListView) getView().findViewById(R.id.list_you_follow); mLoadingLayout = getView().findViewById(R.id.loadingLayout); mResultLayout = getView().findViewById(R.id.resultLayout); list.setVisibility(View.VISIBLE); mResultLayout.setVisibility(View.GONE); if (null == Statics.hashUsers) return; users = new ArrayList<User>(); for (String key : Statics.hashUsers.keySet()) { User user = Statics.hashUsers.get(key); if (Statics.curUser.getFbid() != null) { if (!user.isFollowed() && !user.getFbid().equals(Statics.curUser.getFbid())) { users.add(user); } } } Collections.sort(users, new UserSort()); mLoadingLayout.setVisibility(View.GONE); uAdapter = new UserAdapter(mContext, users); list.setAdapter(uAdapter); if (users.size() == 0) { mResultLayout.setVisibility(View.VISIBLE); } if (!Statics.isWhoToFollowLoaded) { if (Statics.curUser != null) { mTask = new GetUserByTypeTask(mContext, Statics.curUser.getFbid(), GetUserByTypeTask.SIMILAR_ME, this); mTask.execute(); } } list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View arg1, final int pos, long arg3) { if (users.get(pos).getArtists() == null || (users.get(pos).getArtists() == null && users .get(pos).getArtists().size() == 0) || (users.get(pos).getArtists() != null && users.get( pos).getArtistcount() != users.get(pos) .getArtists().size())) { if (Statics.isNetworkConnected(getActivity())) { new GetUserArtistListTask(getActivity(), Statics.curUser.getFbid(), users.get(pos) .getFbid()) { protected void onPostExecute(User result) { super.onPostExecute(result); if (result != null) { users.get(pos).setArtists(result.getArtists()); users.get(pos).setGenre(result.getGenre()); UserDetailsFragment fragment = new UserDetailsFragment(); fragment.setUser(users.get(pos)); FragmentTransaction fragmentTransaction = getActivity() .getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.frame_content, fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); /* UserDetailFragment fragment = new UserDetailFragment(); fragment.setUser(users.get(pos)); FragmentTransaction fragmentTransaction = getFragmentManager() .beginTransaction(); fragmentTransaction.replace( R.id.frame_content, fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit();*/ } else { Toast.makeText( getActivity() .getApplicationContext(), getString(R.string.error_no_saved_data), Toast.LENGTH_SHORT).show(); } }; }.execute(); } else { Toast.makeText( getActivity(), getActivity().getString( R.string.txt_not_internet), Toast.LENGTH_SHORT).show(); } } else { UserDetailsFragment fragment = new UserDetailsFragment(); fragment.setUser(users.get(pos)); FragmentTransaction fragmentTransaction = getActivity() .getSupportFragmentManager().beginTransaction(); fragmentTransaction.replace(R.id.frame_content, fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit(); /*UserDetailFragment fragment = new UserDetailFragment(); fragment.setUser(users.get(pos)); FragmentTransaction fragmentTransaction = getFragmentManager() .beginTransaction(); fragmentTransaction.replace(R.id.frame_content, fragment); fragmentTransaction.addToBackStack(null); fragmentTransaction.commit();*/ } } }); } @Override public void onDestroyView() { if (getView() != null) { ((ViewGroup) getView().getParent()).removeView(getView()); } if (mTask != null) { mTask.cancel(true); } super.onDestroyView(); } @Override public void onStartGetData() { if (users == null || users.size() == 0) { mLoadingLayout.setVisibility(View.VISIBLE); mResultLayout.setVisibility(View.GONE); } } @Override public void onGotData(ArrayList<User> users) { mLoadingLayout.setVisibility(View.GONE); if (users == null || users.size() == 0) { try { mResultLayout.setVisibility(View.VISIBLE); getView().findViewById(R.id.list_you_follow).setVisibility( View.GONE); } catch (Exception ex) { } } else { Collections.sort(users, new UserSort()); this.users = users; if (mContext != null) { if (this.users == null) { this.users = new ArrayList<User>(); } uAdapter = new UserAdapter(mContext, this.users); list.setAdapter(uAdapter); list.setVisibility(View.VISIBLE); } } } @Override public void onError(String error) { mLoadingLayout.setVisibility(View.GONE); list.setVisibility(View.VISIBLE); } }