package com.socioboard.t_board_pro.fragments; import java.util.ArrayList; import java.util.List; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import com.socioboard.t_board_pro.adapters.ToFollowingAdapter; import com.socioboard.t_board_pro.fragments.FragmentFans.FanFollowing; import com.socioboard.t_board_pro.fragments.FragmentFans.FetchReqPaged; import com.socioboard.t_board_pro.twitterapi.TwitterRequestCallBack; import com.socioboard.t_board_pro.twitterapi.TwitterUserGETRequest; import com.socioboard.t_board_pro.util.Const; import com.socioboard.t_board_pro.util.MainSingleTon; import com.socioboard.t_board_pro.util.ToFollowingModel; import com.socioboard.tboardpro.R; import android.app.Activity; import android.graphics.Bitmap; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.ListView; import android.widget.RelativeLayout; import android.widget.Toast; import android.widget.AbsListView.OnScrollListener; public class FragmentNanFollowers extends Fragment implements OnScrollListener { View rootView; ListView listView; Bitmap userImage, userbannerImage; public ToFollowingAdapter toFollowingAdp; RelativeLayout reloutProgress; Activity aActivity; ArrayList<ToFollowingModel> nonFollowers = new ArrayList<ToFollowingModel>(); boolean isAlreadyScrolling = true; ViewGroup viewGroup; Handler handler = new Handler(); @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { aActivity = getActivity(); rootView = inflater.inflate(R.layout.fragment_to_following, container, false); reloutProgress = (RelativeLayout) rootView .findViewById(R.id.reloutProgress); listView = (ListView) rootView.findViewById(R.id.listViewToFollowing); listView.setOnScrollListener(this); addFooterView(); viewGroup.setVisibility(View.INVISIBLE); new FanFollowing().execute(); return rootView; } private void addFooterView() { LayoutInflater inflater = getActivity().getLayoutInflater(); viewGroup = (ViewGroup) inflater.inflate(R.layout.progress_layout, listView, false); listView.addFooterView(viewGroup); myprint("addFooterView++++++++++++++++++++++++++++++++++++++++++++++ DONt LOad"); } public class FanFollowing extends AsyncTask<Void, Void, Void> { @Override protected Void doInBackground(Void... params) { showProgress(); TwitterUserGETRequest twitterUserGETRequest = new TwitterUserGETRequest( MainSingleTon.currentUserModel, new TwitterRequestCallBack() { @Override public void onSuccess(String jsonResult) { myprint("onSuccess jsonResult " + jsonResult); parseJsonResult(jsonResult); } @Override public void onFailure(Exception e) { myprint("onFailure e " + e); cancelProgres(); } @Override public void onSuccess(JSONObject jsonObject) { myprint("onSuccess JSONObject " + jsonObject); } }); String userswithComma = ""; if (nonFollowers.size() >= MainSingleTon.nonFollowersIds.size()) { handler.post(new Runnable() { @Override public void run() { viewGroup.setVisibility(View.INVISIBLE); } }); } else { for (int i = nonFollowers.size(); i < (nonFollowers.size() + 99); ++i) { if (i == nonFollowers.size()) { userswithComma = MainSingleTon.nonFollowersIds.get(i); myprint(i + "++++++++++ i first " + userswithComma); } else { try { userswithComma = userswithComma + "," + MainSingleTon.nonFollowersIds.get(i); myprint(i + "++++++++++ i other " + userswithComma); } catch (Exception e) { break; } } } List<BasicNameValuePair> peramPairs = new ArrayList<BasicNameValuePair>(); peramPairs.add(new BasicNameValuePair(Const.user_id, userswithComma)); peramPairs.add(new BasicNameValuePair(Const.include_entities, "false")); twitterUserGETRequest.executeThisRequest(MainSingleTon.userShowIds, peramPairs); } return null; } } protected void parseJsonResultPaged(String jsonResult) { myprint("parseJsonResult "); handler.post(new Runnable() { @Override public void run() { viewGroup.setVisibility(View.INVISIBLE); } }); try { JSONObject jsonObject = new JSONObject(jsonResult); JSONArray jsonArray = jsonObject.getJSONArray("users"); for (int i = 0; i < jsonArray.length(); ++i) { JSONObject jsonObject2 = jsonArray.getJSONObject(i); myprint("jsonObject2 " + i + " = " + jsonObject2); final ToFollowingModel followingModel = new ToFollowingModel(); followingModel.setFollowingStatus(jsonObject2.getString( Const.following).contains("true")); followingModel.setId(jsonObject2.getString(Const.id_str)); followingModel.setNoFollowers(jsonObject2 .getString(Const.followers_count)); followingModel.setNoToFollowing(jsonObject2 .getString(Const.friends_count)); followingModel.setNoTweets(jsonObject2 .getString(Const.listed_count)); followingModel.setTweeet_str(""); followingModel.setUserImagerUrl(jsonObject2 .getString(Const.profile_image_url)); followingModel.setUserName("@" + jsonObject2.getString(Const.screen_name)); myprint(followingModel); getActivity().runOnUiThread(new Runnable() { @Override public void run() { if (FragmentNanFollowers.this.getActivity() != null) { int listCount = listView.getCount(); toFollowingAdp.tweetModels.add(followingModel); listView.setScrollY(listCount); toFollowingAdp.notifyDataSetChanged(); nonFollowers = toFollowingAdp.tweetModels; } } }); } } catch (JSONException e) { e.printStackTrace(); } isAlreadyScrolling = false; } public class FetchReqPaged extends AsyncTask<String, Void, Void> { @Override protected Void doInBackground(String... params) { TwitterUserGETRequest twitterUserGETRequest = new TwitterUserGETRequest( MainSingleTon.currentUserModel, new TwitterRequestCallBack() { @Override public void onSuccess(String jsonResult) { myprint("onSuccess jsonResult " + jsonResult); parseJsonResultPaged(jsonResult); } @Override public void onFailure(Exception e) { myprint("onFailure e " + e); } @Override public void onSuccess(JSONObject jsonObject) { myprint("onSuccess JSONObject " + jsonObject); } }); String userswithComma = ""; if (nonFollowers.size() >= MainSingleTon.nonFollowersIds.size()) { handler.post(new Runnable() { @Override public void run() { viewGroup.setVisibility(View.INVISIBLE); } }); } else { for (int i = nonFollowers.size(); i < (nonFollowers.size() + 99); ++i) { if (i == nonFollowers.size()) { userswithComma = MainSingleTon.nonFollowersIds.get(i); } else { try { userswithComma = "," + MainSingleTon.nonFollowersIds.get(i); } catch (Exception e) { break; } } } List<BasicNameValuePair> peramPairs = new ArrayList<BasicNameValuePair>(); peramPairs.add(new BasicNameValuePair(Const.user_id, userswithComma)); peramPairs.add(new BasicNameValuePair(Const.include_entities, "false")); twitterUserGETRequest.executeThisRequest(MainSingleTon.userShowIds, peramPairs); } return null; } } protected void parseJsonResult(String jsonResult) { myprint("parseJsonResult "); try { JSONArray jsonArray = new JSONArray(jsonResult); for (int i = 0; i < jsonArray.length(); ++i) { JSONObject jsonObject2 = jsonArray.getJSONObject(i); myprint("jsonObject2 " + i + " = " + jsonObject2); ToFollowingModel followingModel = new ToFollowingModel(); followingModel.setFollowingStatus(true); followingModel.setId(jsonObject2.getString(Const.id_str)); followingModel.setNoFollowers(jsonObject2 .getString(Const.followers_count)); followingModel.setNoToFollowing(jsonObject2 .getString(Const.friends_count)); followingModel.setNoTweets(jsonObject2 .getString(Const.listed_count)); followingModel.setTweeet_str(""); followingModel.setUserImagerUrl(jsonObject2 .getString(Const.profile_image_url)); followingModel.setUserName("@" + jsonObject2.getString(Const.screen_name)); nonFollowers.add(followingModel); myprint(followingModel); } getActivity().runOnUiThread(new Runnable() { @Override public void run() { if (FragmentNanFollowers.this.getActivity() != null) { toFollowingAdp = new ToFollowingAdapter(getActivity(), nonFollowers, FragmentNanFollowers.this.getActivity()); listView.setAdapter(toFollowingAdp); isAlreadyScrolling = false; } } }); } catch (JSONException e) { e.printStackTrace(); } cancelProgres(); } void myToastS(final String toastMsg) { Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_SHORT).show(); } void myToastL(final String toastMsg) { Toast.makeText(getActivity(), toastMsg, Toast.LENGTH_LONG).show(); } public void myprint(Object msg) { System.out.println(msg.toString()); } void showProgress() { aActivity.runOnUiThread(new Runnable() { @Override public void run() { reloutProgress.setVisibility(View.VISIBLE); } }); } void cancelProgres() { aActivity.runOnUiThread(new Runnable() { @Override public void run() { reloutProgress.setVisibility(View.INVISIBLE); } }); } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { /* maybe add a padding */ boolean loadMore = firstVisibleItem + visibleItemCount >= totalItemCount; if (loadMore) { myprint("YESSSSSSSSSSSSS load MOOOOOOOOOREE"); if (isAlreadyScrolling) { myprint("BUT isAlreadyScrolling "); } else { viewGroup.setVisibility(View.VISIBLE); isAlreadyScrolling = true; myprint(toFollowingAdp.getItem(toFollowingAdp.getCount() - 1)); new FetchReqPaged().execute(); } } else { myprint("NOOOOOOOOO DONt LOad"); } } @Override public void onScrollStateChanged(AbsListView view, int scrollState) { } }