I am having an expandable list-view in which i load data's from sq-lite. First i have set a limit to load 10 data's when the list-view scroll reaches end i have used the async task to load another 10 items from database.This part works fine but when all the data from sq-lite is loaded and when i scroll the list-view it shows the progress dialog again.can anyone tell me how to disable the async task when the list view has loaded all data from sq-lite.
Listscroll:
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
listAdapter.isScrolling(true);
//what is the bottom item that is visible
int lastInScreen = firstVisibleItem + visibleItemCount;
//is the bottom item visible & not loading more already? Load more!
if ((lastInScreen == totalItemCount) && !(loadingMore)) {
new LoadDataTask().execute();
}
}
Async Task:
class LoadDataTask extends AsyncTask<String, Void, String> {
@Override
protected void onPreExecute() {
pDialog = new ProgressDialog(NewDaybook_Activity.this);
// Set progressdialog title
pDialog.setTitle(getResources().getString(R.string.app_name));
// Set progressdialog message
pDialog.setMessage("Loading more...");
pDialog.setIndeterminate(false);
// Show progressdialog
if(olimit>totalcount){
pDialog.dismiss();
}else{
pDialog.show();
}
}
@Override
protected String doInBackground(String... olimits) {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
olimit = olimit + 10;
daybooks = new ArrayList<Daybook>();
if (olimit > totalcount) {
loadingMore = false;
} else {
daybooks = databaseHandler.getAlldaybookentriesdatewise(olimit);
daybooklists = new ArrayList<Daybooklist>();
listDataHeader = new ArrayList<String>();
listDataChild = new HashMap<String, List<Daybooklist>>();
for (int i = 0; i < daybooks.size(); i++) {
String date = daybooks.get(i).getDate();
if (date != null) {
String s = date;
String[] spiliter = s.split("-");
String year = spiliter[0];
String month = spiliter[1];
String dates = spiliter[2];
if (month.startsWith("01")) {
disorderedlist = dates + "Jan" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("02")) {
disorderedlist = dates + "Feb" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("03")) {
disorderedlist = dates + "Mar" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("04")) {
disorderedlist = dates + "Apr" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("05")) {
disorderedlist = dates + "May" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("06")) {
disorderedlist = dates + "Jun" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("07")) {
disorderedlist = dates + "Jul" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("08")) {
disorderedlist = dates + "Aug" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("09")) {
disorderedlist = dates + "Sep" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("10")) {
disorderedlist = dates + "Oct" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("11")) {
disorderedlist = dates + "Nov" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
} else if (month.startsWith("12")) {
disorderedlist = dates + "Dec" + year;
disorderedlist = disorderedlist.replaceAll("\\s+", "");
}
listDataHeader.add(disorderedlist);
}
chid = new ArrayList<Daybooklist>();
daybooklists = databaseHandler.getAllDaywisedaybookdetails(date);
for (int j = 0; j < daybooklists.size(); j++) {
String name = daybooklists.get(j).getName();
String desc = daybooklists.get(j).getDescription();
String type = daybooklists.get(j).getType();
String usertype = daybooklists.get(j).getUsertype();
String amtin = daybooklists.get(j).getAmountin();
String amtout = daybooklists.get(j).getAmountout();
String extamt = daybooklists.get(j).getExtraamt();
String mobno = daybooklists.get(j).getMobileno();
String dates = daybooklists.get(j).getSdate();
String time = daybooklists.get(j).getCtime();
chid.add(new Daybooklist(name, desc, type, usertype, amtin, amtout, extamt, mobno, dates, time));
}
listDataChild.put(listDataHeader.get(i), chid);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
});
return null;
}
@Override
protected void onPostExecute(String disorderedlist) {
listAdapter.setTransactionList(listDataHeader, listDataChild);
for (int i = 0; i < listAdapter.getGroupCount(); i++) {
expListView.expandGroup(i);
}
loadingMore = false;
}
@Override
protected void onCancelled() {
// Notify the loading more operation has finished
// pDialog.dismiss();
loadingMore = false;
}
}