Tuesday, 20 August 2013

OnScrollListener continuously runs IF statement

OnScrollListener continuously runs IF statement

I have a class the extends OnScrollListener, this task is suppose to
detect when the bottom of a listview is shown and then suppose to call an
asynctask to load more views for the listview. What happens is when the
user scrolls to the bottom the function is continuously called; as if the
method was a while statement. Both of these classes are in the same
activity, here is my current code.
final ProgressDialog progDailog = new
ProgressDialog(DashboardActivity.this); class loadComments extends
AsyncTask {
@Override
protected void onPreExecute() {
super.onPreExecute();
progDailog.setIndeterminate(false);
progDailog.setCancelable(true);
progDailog.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);
progDailog.show();
progDailog.setContentView(R.layout.progress_circle);
}
@Override
protected void onProgressUpdate(String... values) {
super.onProgressUpdate(values);
}
protected JSONObject doInBackground(JSONObject... params) {
JSONObject json2 =
CollectComments.collectComments(usernameforcomments,
offsetNumber);
return json2;
}
@Override
protected void onPostExecute(JSONObject json2) {
try {
if (json2.getString(KEY_SUCCESS) != null) {
registerErrorMsg.setText("");
String res2 = json2.getString(KEY_SUCCESS);
if(Integer.parseInt(res2) == 1){
JSONArray commentArray =
json2.getJSONArray(KEY_COMMENT);
String comments[] = new
String[commentArray.length()];
for ( int i=0; i<commentArray.length(); i++ ) {
comments[i] = commentArray.getString(i);
}
JSONArray numberArray =
json2.getJSONArray(KEY_NUMBER);
String numbers[] = new
String[numberArray.length()];
for ( int i=0; i<numberArray.length(); i++ ) {
numbers[i] = numberArray.getString(i);
}
JSONArray usernameArray =
json2.getJSONArray(KEY_USERNAME);
String usernames[] = new
String[usernameArray.length()];
for ( int i=0; i<usernameArray.length(); i++ ) {
usernames[i] = usernameArray.getString(i);
}
JSONArray stateArray =
json2.getJSONArray(KEY_STATE);
String states[] = new
String[stateArray.length()];
for ( int i=0; i<stateArray.length(); i++ ) {
states[i] = stateArray.getString(i);
}
JSONArray descsArray =
json2.getJSONArray(KEY_COMMENTARRAYDESC);
String descs[] = new String[descsArray.length()];
for ( int i=0; i<descsArray.length(); i++ ) {
descs[i] = descsArray.getString(i);
}
mycmlist.add(comments,usernames,numbers,states,descs);
mycmlist.notifyDataSetChanged();
}//end if key is == 1
else{
// Error in registration
registerErrorMsg.setText(json2.getString(KEY_ERROR_MSG));
}//end else
}//end if
} //end try
catch (JSONException e) {
e.printStackTrace();
}//end catch
progDailog.dismiss();
}
}
new loadComments().execute();
mainListView = (ListView) findViewById(android.R.id.list);
class EndlessScrollListener implements OnScrollListener {
private int i = 0;
private int visibleThreshold = 5;
private int previousTotal = 0;
private boolean loading = true;
public EndlessScrollListener() {
}
public EndlessScrollListener(int visibleThreshold) {
this.visibleThreshold = visibleThreshold;
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem,
int visibleItemCount, int totalItemCount) {
//This is the method that continuously gets called
if ((firstVisibleItem + visibleItemCount) ==
totalItemCount) {
new loadComments().execute();
}
}
@Override
public void onScrollStateChanged(AbsListView view, int
scrollState) {
}
}
mainListView.setOnScrollListener(new EndlessScrollListener());

No comments:

Post a Comment