2017-01-31 3 views
0

Я работаю над простым приложением, которое получает данные с использованием общедоступных данных (JSON) и показывает их в виде списка. И все работает нормально. Теперь я хочу реализовать «вид поиска» на панели действий. Поэтому я последовал за учебником по youtube (https://www.youtube.com/watch?v=hoEY2n8CCSk) и сделал именно то, что он сделал. Хотя поиск выглядел так, как я предполагал, поиск fuction не работает вообще. Я думаю, что учебник youtube отфильтровывал только строку, но мне нужно отфильтровать объект в представлении списка по переменной имени каждого объекта. Используя метод getName(). Что мне делать??Метод поиска oncreateoptions не работает с объектом из JSON (Android)

MainActivity.java

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 

    MenuInflater inflater = getMenuInflater(); 
    inflater.inflate(R.menu.menu_search, menu); 
    MenuItem item = menu.findItem(R.id.menuSearch); 
    SearchView searchView = (SearchView) item.getActionView(); 

    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

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

     @Override 
     public boolean onQueryTextChange(String newText) { 
      mAdapter.getFilter().filter(newText); 
      return false; 
     } 
    }); 

    return super.onCreateOptionsMenu(menu); 
} 

AndroidMenifest.xml

<?xml version="1.0" encoding="utf-8"?> 
<manifest xmlns:android="http://schemas.android.com/apk/res/android" 
    <uses-permission android:name="android.permission.INTERNET"/> 
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 

    <application 
    android:allowBackup="true" 
    android:icon="@mipmap/ic_launcher" 
    android:label="@string/app_name" 
    android:theme="@style/AppTheme" > 
    <activity 
     android:name=".MainActivity" 
     android:label="@string/app_name" 
     android:theme="@style/myAppTheme"> 

     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 
    </application> 

</manifest> 

menu_search.xml

<item android:id="@+id/menuSearch" 
    android:title="Search" 
    android:icon="@android:drawable/ic_menu_search" 
    app:actionViewClass="android.widget.SearchView" 
    app:showAsAction="always"> 

</item> 

ответ

0

Попробуйте этот способ ..

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.menuSearch) { 
     SearchView searchView = (SearchView) item.getActionView(); 

     searchView 
       .setOnQueryTextListener(new SearchView.OnQueryTextListener() { 

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

        @Override 
        public boolean onQueryTextChange(String newText) { 
         mAdapter.getFilter().filter(newText); 
         return false; 
        } 
       }); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 
+0

Все еще ничего не делает .. :(Кстати, следует ли использовать onOptionItemSelected для этого? – JessJ

+0

да .. вы пробовали мой код? потому что он работает в моем случае. я сделал купол. –

+0

Да, я пробовал .. и когда я набираю строку поиска .. ничего не происходит .. – JessJ

Смежные вопросы