Hello I am trying to implement the search functionality. I have a SearchResultActivity class that extends ListActivity. I have also edited my AndroidManifest file to indicate a new activity. I have two different arrays, with different lengths and more are still coming. I have been surfing the net on how to retrieve the data from ListView but I haven't got the search function running. Please review all my codes below and let me know what I need to do or probably doing wrong. Still very new developer on Android and Java. So a nice and easy solution would be appreciated. Thanks.
public class SearchResultActivity extends ListActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_search_result);
}
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
handleIntent(intent);
}
private void handleIntent(Intent intent) {
if (Intent.ACTION_SEARCH.equals(intent.getAction())) {
String query = intent.getStringExtra(SearchManager.QUERY);
showResults(query);
}
}
private void showResults(String query) {
/*SearchResultActivity.this.adapterBike.getFilter().filter(query);*/
//SearchResultActivity.this.adapterCar.getFilter().filter(query);
}
@Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
}
@Override
public void setListAdapter(ListAdapter adapter) {
super.setListAdapter(adapter);
}
}
public class HomePage extends AppCompatActivity {
ListView allLists;
SearchView searchView;
CarSublist carSublist;
BikeSublist bikeSublist;
ArrayAdapter adapterBike;
ArrayAdapter adapterCar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_home_page);
adapterBike = ArrayAdapter.createFromResource(this, R.array.BikeList, android.R.layout.simple_list_item_1);
adapterCar = ArrayAdapter.createFromResource(this, R.array.CarList, android.R.layout.simple_list_item_1);
allLists = (ListView)findViewById(R.id.all_list);
}
@Override
public void onBackPressed() {
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else {
super.onBackPressed();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.home_page, menu);
SearchManager searchManager = (SearchManager)getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(
new ComponentName(getApplicationContext(), SearchResultActivity.class)));
searchView.setSubmitButtonEnabled(true);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
//decided to work on the firstArray
@Override
public boolean onQueryTextSubmit(String query) {
String[] bikeArray= getResources().getStringArray(R.array.BikeList);
String[] carArray = getResources().getStringArray(R.array.CarList);
for (String data : bikeArray){
if (data.equals(query) ){
//do Something
bikeSublist = new BikeSublist();
bikeSublist.bindData();
}else{
break;
}
}
HomePage.this.adapterBike.getFilter().filter(query);
return true;
}
@Override
public boolean onQueryTextChange(String newText) {
//decided to work on the firstArray
String[] bikeArray= getResources().getStringArray(R.array.BikeList);
for (String data : bikeArray){
if (data.equals(newText) ){
HomePage.this.adapterBike.getFilter().filter(newText);
bikeSublist = new BikeSublist();
bikeSublist.bindData();
}else{
break;
}
}
return true;
}
});
return true;
}
}