2017-01-31 3 views
0

Ich arbeite an einer einfachen App, die Daten mit öffentlichen Daten (JSON) erhält und sie in einer Listenansicht anzeigen. Und es funktioniert in Ordnung. Jetzt möchte ich 'Suchansicht' in der Aktionsleiste implementieren. So folgte ich youtube Tutorial (https://www.youtube.com/watch?v=hoEY2n8CCSk) und tat genau das, was er tat. Obwohl die Suchansicht wie gewünscht angezeigt wurde, funktioniert die Suchfunktion überhaupt nicht. Ich denke, das Youtube-Tutorial gefiltert nur Zeichenfolge, aber ich muss das Objekt in der Listenansicht nach Name Variable jedes Objekts filtern. Using getName() -Methode. Was soll ich machen??searchview oncreateoptions Methode funktioniert nicht mit Objekt von 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> 

Antwort

0

Versuchen Sie, diese Art und Weise ..

@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

Tut immer noch nichts .. :(Übrigens, sollte ich onOptionItemSelected dafür verwenden? – JessJ

+0

ja .. hast du meinen Code ausprobiert? weil es in meinem Fall funktioniert. Ich habe eine Kuppel gemacht. –

+0

Ja, ich versuchte .. und wenn ich auf Suchleiste tippe..nichts passiert .. – JessJ

Verwandte Themen