package com.infonuascape.osrshelper; import android.app.Activity; import android.app.AlertDialog; import android.appwidget.AppWidgetManager; import android.content.Context; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.view.inputmethod.InputMethodManager; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.AdapterView.OnItemLongClickListener; import android.widget.EditText; import android.widget.ListView; import android.widget.SearchView; import android.widget.Toast; import com.infonuascape.osrshelper.adapters.EndlessScrollListener; import com.infonuascape.osrshelper.adapters.SearchAdapter; import com.infonuascape.osrshelper.adapters.StableArrayAdapter; import com.infonuascape.osrshelper.db.OSRSHelperDataSource; import com.infonuascape.osrshelper.grandexchange.GEHelper; import com.infonuascape.osrshelper.grandexchange.GESearchResults; import com.infonuascape.osrshelper.hiscore.HiscoreHelper; import com.infonuascape.osrshelper.utils.Utils; import com.infonuascape.osrshelper.utils.exceptions.PlayerNotFoundException; import com.infonuascape.osrshelper.utils.grandexchange.Item; import com.infonuascape.osrshelper.utils.players.PlayerSkills; import com.infonuascape.osrshelper.widget.OSRSAppWidgetProvider; import java.util.ArrayList; public class SearchItemActivity extends Activity implements OnItemClickListener, SearchView.OnQueryTextListener { private SearchAdapter adapter; private GEHelper geHelper; private SearchView editText; private PopulateSearchResults runnableSearch; private int pageNum; private String searchText; private boolean isRestartAdapter; private boolean isContinueToLoad; private ListView list; public static void show(final Context context){ Intent i = new Intent(context, SearchItemActivity.class); context.startActivity(i); } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.search_ge); editText = ((SearchView) findViewById(R.id.searchView)); editText.setOnQueryTextListener(this); editText.setIconified(false); list = (ListView) findViewById(android.R.id.list); runnableSearch = new PopulateSearchResults(); geHelper = new GEHelper(); } public void onResume(){ super.onResume(); ListView list = (ListView) findViewById(android.R.id.list); list.setOnScrollListener(new EndlessScrollListener() { @Override public boolean onLoadMore(int page, int totalItemsCount) { if(isContinueToLoad) { if (!runnableSearch.isCancelled()) { runnableSearch.cancel(true); } runnableSearch = new PopulateSearchResults(); runnableSearch.execute(searchText); } return true; } }); list.setOnItemClickListener(this); } @Override public boolean onQueryTextSubmit(String s) { return false; } @Override public boolean onQueryTextChange(String s) { if(s.length() > 0) { if(!runnableSearch.isCancelled()) { runnableSearch.cancel(true); } isRestartAdapter = true; isContinueToLoad = true; list.scrollTo(0, 0); runnableSearch = new PopulateSearchResults(); searchText = s; pageNum = 1; runnableSearch.execute(searchText); } else if (adapter != null) { adapter.clear(); adapter.notifyDataSetChanged(); } return false; } private class PopulateSearchResults extends AsyncTask<String, Void, GESearchResults> { @Override protected GESearchResults doInBackground(String... urls) { runOnUiThread(new Runnable() { @Override public void run() { findViewById(R.id.progress_loading).setVisibility(View.VISIBLE); } }); return geHelper.search(urls[0], pageNum); } @Override protected void onPostExecute(final GESearchResults searchResults) { runOnUiThread(new Runnable() { @Override public void run() { if(searchResults.itemsSearch.size() == 0) { isContinueToLoad = false; } findViewById(R.id.progress_loading).setVisibility(View.GONE); if(isRestartAdapter) { adapter = new SearchAdapter(SearchItemActivity.this, searchResults.itemsSearch); list.setAdapter(adapter); isRestartAdapter = false; isContinueToLoad = true; } else { adapter.addAll(searchResults.itemsSearch); adapter.notifyDataSetChanged(); } pageNum++; } }); } } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { final Item item = adapter.getItem(position); } }