From: drizea Date: Mon, 13 Aug 2012 09:34:39 +0000 (+0300) Subject: added load data on scroll end for search catalog activity + spinner org layout X-Git-Url: https://old-git.evergreen-ils.org/?a=commitdiff_plain;h=ef63cec4f702665c860406cc441129da3bd3ef2c;p=working%2FEvergreen.git added load data on scroll end for search catalog activity + spinner org layout removed the add more button at the end of the list and replaced the behavior to load data, if available, when scrolling to the end of the list --- diff --git a/Open-ILS/src/Android/res/layout/spinner_layout.xml b/Open-ILS/src/Android/res/layout/spinner_layout.xml new file mode 100644 index 0000000000..e0bf5744e5 --- /dev/null +++ b/Open-ILS/src/Android/res/layout/spinner_layout.xml @@ -0,0 +1,9 @@ + + diff --git a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java index 17da005b30..b6a9d8850e 100644 --- a/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java +++ b/Open-ILS/src/Android/src/org/evergreen/android/searchCatalog/SearchCatalog.java @@ -185,7 +185,6 @@ public class SearchCatalog { for(int i=0;i recordList.size()) { - recordList.add(new RecordInfo()); - searchResultsNumber.setText(+recordList.size() - - 1 + " out of " + search.visible); - } else - searchResultsNumber.setText(+recordList.size() - + " out of " + search.visible); - } else - searchResultsNumber.setText(+recordList.size() - + " out of " + search.visible); + /* + * if (search.visible > recordList.size()) { + * recordList.add(new RecordInfo()); + * searchResultsNumber.setText(+recordList.size() - + * 1 + " out of " + search.visible); } else + */ + } + searchResultsNumber.setText(+recordList.size() + + " out of " + search.visible); adapter.notifyDataSetChanged(); progressDialog.dismiss(); @@ -366,36 +371,122 @@ public class SearchCatalogListView extends Activity { (search.selectedOrganization.level - 1)); intent.putExtra("recordList", recordList); - // TODO put total number intent.putExtra("recordPosition", position); startActivity(intent); } } }); + lv.setOnScrollListener(new OnScrollListener() { + + @Override + public void onScrollStateChanged(AbsListView view, int scrollState) { + // TODO Auto-generated method stub + + } + + @Override + public void onScroll(AbsListView view, int firstVisibleItem, + int visibleItemCount, int totalItemCount) { + // TODO Auto-generated method stub + + if (!loadingElements) { + + Log.d(TAG, " Scroll adapter " + totalItemCount + " " + + visibleItemCount + " " + firstVisibleItem + " " + + adapter.getCount() + " " + search.visible); + if (totalItemCount > 0 + && (((totalItemCount - visibleItemCount) <= (firstVisibleItem)) && adapter + .getCount() < search.visible)) { + loadingElements = true; + Log.d(TAG, "Load more data"); + progressDialog = new ProgressDialog(context); + + progressDialog.setMessage("Fetching data"); + progressDialog.show(); + + Thread searchThreadwithOffset = new Thread( + new Runnable() { + + @Override + public void run() { + + String text = searchText.getText() + .toString(); + searchResults.clear(); + + try { + searchResults = search + .getSearchResults( + text, + adapter.getCount()); + } catch (NoNetworkAccessException e) { + runOnUiThread(Utils + .showNetworkNotAvailableDialog(context)); + } catch (NoAccessToServer e) { + runOnUiThread(Utils + .showServerNotAvailableDialog(context)); + } + + runOnUiThread(new Runnable() { + + @Override + public void run() { + + // don't clear record list + // recordList.clear(); + System.out.println("Returned " + searchResults.size() + " elements from search"); + if (searchResults.size() > 0) { + + for (int j = 0; j < searchResults + .size(); j++) + recordList + .add(searchResults + .get(j)); + + } + + searchResultsNumber.setText(adapter + .getCount() + + " out of " + + search.visible); + + adapter.notifyDataSetChanged(); + progressDialog.dismiss(); + loadingElements = false; + } + }); + + } + }); + + searchThreadwithOffset.start(); + } + } + } + }); + searchText = (EditText) findViewById(R.id.searchText); - //enter key now is labeled "Search" on virtual keyboard + // enter key now is labeled "Search" on virtual keyboard searchText.setImeActionLabel("Search", EditorInfo.IME_ACTION_SEARCH); searchText.setImeOptions(EditorInfo.IME_ACTION_SEARCH); - - - //enter key on virtual keyboard starts the search + + // enter key on virtual keyboard starts the search searchText.setOnKeyListener(new OnKeyListener() { - public boolean onKey(View v, int keyCode, KeyEvent event) { - // If the event is a key-down event on the "enter" button - if ((event.getAction() == KeyEvent.ACTION_DOWN) && - ((keyCode == KeyEvent.KEYCODE_ENTER) || keyCode == EditorInfo.IME_ACTION_SEARCH)) { - // Perform action on key press + public boolean onKey(View v, int keyCode, KeyEvent event) { + // If the event is a key-down event on the "enter" button + if ((event.getAction() == KeyEvent.ACTION_DOWN) + && ((keyCode == KeyEvent.KEYCODE_ENTER) || keyCode == EditorInfo.IME_ACTION_SEARCH)) { + // Perform action on key press Thread searchThread = new Thread(searchForResultsRunnable); searchThread.start(); - return true; - } - return false; - } + return true; + } + return false; + } }); - choseOrganisation = (Spinner) findViewById(R.id.chose_organisation); searchButton = (ImageButton) findViewById(R.id.searchButton); @@ -421,7 +512,7 @@ public class SearchCatalogListView extends Activity { } } ArrayAdapter adapter = new ArrayAdapter(this, - android.R.layout.simple_spinner_item, list); + layout.spinner_layout, list); choseOrganisation.setAdapter(adapter); choseOrganisation.setSelection(selectedPos); @@ -708,7 +799,6 @@ public class SearchCatalogListView extends Activity { .findViewById(R.id.search_record_publishing); // set text - recordTitle.setText(record.title); recordAuthor.setText(record.author); recordPublisher