2017-04-23 31 views
-1

アンドロイドアプリに検索機能を追加するにはどうすればよいですか?私は検索機能を追加したいリストビューを持っています。私はコードを持っていますが、どうすればアプリケーションと正しく統合するのか分かりません。 SimpleAdapter検索を追加するには?

2 - アダプタグローバル変数を作るに

private ListView listView; 
List<Dog> dogs = new ArrayList<>(); 
int dataSize; 
String[]breed; 
public Dog listDog = new Dog(); 
private SearchView searchView; 
ArrayAdapter<String>adapter = null; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    searchView = (SearchView)findViewById(R.id.search); 
    initInstances(); 
    setupSearchView(); 
} 

private void initInstances() { 

    prepareData(); 

    ListAdapter adapter = new ListAdapter(MainActivity.this, listDog); 
    listView = (ListView) findViewById(R.id.list_item); 
    listView.setAdapter(adapter); 
    listView.setOnItemClickListener(listViewClickListener); 
} 

private void setupSearchView() { 
    searchView.setIconifiedByDefault(false); 
    searchView.setOnQueryTextListener(this); 
    searchView.setSubmitButtonEnabled(true); 
    searchView.setQueryHint("Искать кота"); 
} 

private void prepareData() { 

    int resId[] = {R.drawable.german_shepherd, R.drawable.labrador_retriever, R.drawable.blue_dog, R.drawable.beagle 
      , R.drawable.boxer, R.drawable.golden_retriever, R.drawable.poodle, R.drawable.pug, R.drawable.siberian_husky, 
      R.drawable.great_dane, R.drawable.german_shepherd, R.drawable.labrador_retriever, R.drawable.blue_dog, R.drawable.beagle 
      , R.drawable.boxer, R.drawable.golden_retriever, R.drawable.poodle, R.drawable.pug, R.drawable.siberian_husky, 
      R.drawable.great_dane, R.drawable.german_shepherd, R.drawable.labrador_retriever, R.drawable.blue_dog, R.drawable.beagle 
      , R.drawable.boxer, R.drawable.golden_retriever, R.drawable.poodle, R.drawable.pug, R.drawable.siberian_husky, 
      R.drawable.great_dane, R.drawable.german_shepherd, R.drawable.labrador_retriever, R.drawable.blue_dog, R.drawable.beagle 
      , R.drawable.boxer, R.drawable.golden_retriever, R.drawable.poodle, R.drawable.pug, R.drawable.siberian_husky, 
      R.drawable.great_dane}; 

    breed = new String [] {"German shepherd", "Labrador retriever", "Bull dog", "Beagle", 
      "Boxer", "Golden retriever", "Poodle", "Pug", "Siberian husky", 
      "Great dane", "German shepherd", "Labrador retriever", "Bull dog", "Beagle", 
      "Boxer", "Golden retriever", "Poodle", "Pug", "Siberian husky", 
      "Great dane", "German shepherd", "Labrador retriever", "Bull dog", "Beagle", 
      "Boxer", "Golden retriever", "Poodle", "Pug", "Siberian husky", 
      "Great dane", "German shepherd", "Labrador retriever", "Bull dog", "Beagle", 
      "Boxer", "Golden retriever", "Poodle", "Pug", "Siberian husky", 
      "Great dane"}; 


    String description[] = {getString(R.string.Юлмарт), getString(R.string.ЮлияСадовая), getString(R.string.Ювелирныймагазин585), getString(R.string.Альфа) 
      , getString(R.string.Электромонтаж), getString(R.string.АгрокомплексКарла93), getString(R.string.АгрокомплексКарла363), getString(R.string.ДобрыеСемена), getString(R.string.АгрокомплексКрасная93) 
      , getString(R.string.Глобус), getString(R.string.ПланетаДетства), getString(R.string.АгрокомплексКрасная152), getString(R.string.Золушка), getString(R.string.Офискласс118) 
      , getString(R.string.СалонцветовLadyFlower), getString(R.string.ДекорЮг), getString(R.string.Глобус), getString(R.string.АгрокомплексКрасная25), getString(R.string.ОфисКласс106) 
      , getString(R.string.ПятёрочкаБувальцева26), getString(R.string.БаронДиваноффКрасная1), getString(R.string.Рынок), getString(R.string.Новинтех), getString(R.string.ГлорияДжинс) 
      , getString(R.string.ЦифровойсупермаркетDNS), getString(R.string.Евроремонт), getString(R.string.Гейзер), getString(R.string.Нива), getString(R.string.ДвериАдамКомунистическая20) 
      , getString(R.string.ЦветыДоставка), getString(R.string.БытКубани), getString(R.string.РынокКореновскоеРАЙПО), getString(R.string.Золушка), getString(R.string.ДинскиеКолбасы) 
      , getString(R.string.Цветы), getString(R.string.Тимур), getString(R.string.АгрокомплексКомунистическая20), getString(R.string.АгрокомплексКарла363), getString(R.string.МебельныймагазинРз59) 
      , getString(R.string.Изумруд),}; 
    dataSize = resId.length; 
    adapter = new ArrayAdapter<String>(this, R.layout.list_item,breed); 

    Log.d("khem", "dataSize " + resId.length); 
    Log.d("khem", "breed " + resId.length); 
    Log.d("khem", "description " + resId.length); 



    for (int i = 0; i < dataSize; i++) { 
     Log.d("khem", " " + i); 
     Dog dog = new Dog(resId[i], breed[i], description[i]); 
     dogs.add(dog); 
    } 

    listDog.setDogs(dogs); 

    //Log.d("khem",listDog); 
} 

public boolean onQueryTextSubmit(String query) { 
    return false; 
} 


public boolean onQueryTextChange(String newText) { 
    if (TextUtils.isEmpty(newText)) { 
     listView.clearTextFilter(); 
    } else { 
     listView.setFilterText(newText.toString()); 
    } 
    return true; 
} 

/************************* 
* Listener 
***************************/ 

AdapterView.OnItemClickListener listViewClickListener = new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
     Toast.makeText(MainActivity.this, "POSITION:= " + position, 
       Toast.LENGTH_SHORT).show(); 

     Intent intent = new Intent(MainActivity.this,ShowDetailActivity.class); 
     intent.putExtra("resId",listDog.getDogs().get(position).getResId()); 
     intent.putExtra("breed",listDog.getDogs().get(position).getBreed()); 
     intent.putExtra("desc",listDog.getDogs().get(position).getDescription()); 

     startActivity(intent); 
    } 

}; 
} 

答えて

0

の1-変更ListAdapter、

は、あなたが使用することができますされるgetFilter方法

注:ここでは、コードで、私は」 editTextから配列内で検索したい単語を取得し、TextChangedリスナーを使用して単語を書きながら検索を実行します

あなたは:)

adapter.getFilter().filter(s); 
を配置したい場所を今まであなたが置くことができます
EditText grabResults; 
grabResults.addTextChangedListener(new TextWatcher() { 
     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 

     } 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 


       adapter.getFilter().filter(s); 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 

     } 
    }); 

関連する問題