2017-07-16 1 views
0

Je suis tellement confus comment faire le searchview dans la barre android. C'est les 2 jours maintenant coincés dans ce scénario. Si quelqu'un peut me aider avec mes codes ci-dessous:SearchView dans Android Bar

public class MainActivity extends AppCompatActivity 
     implements LoaderManager.LoaderCallbacks<Cursor> { 
    private static final int EDITOR_REQUEST_CODE = 1001; 
    private CursorAdapter cursorAdapter; 

    MediaPlayer mySound; 
    private AdView mAdView; 

    //If media player stop 
    @Override 
    protected void onPause() { 
     super.onPause(); 
     mySound.release(); 
    } 


    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     mySound = MediaPlayer.create(this, R.raw.door); 

     //Adsence Ads to load 
     MobileAds.initialize(this, "ca-app-pub-8674376475299935~1764444800"); 
     mAdView = (AdView) findViewById(R.id.adView); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     mAdView.loadAd(adRequest); 

     cursorAdapter = new NotesCursorAdapter(this, null, 0); 

     ListView list = (ListView) findViewById(android.R.id.list); 
     list.setAdapter(cursorAdapter); 

     list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
      @Override 
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) { 
       Intent intent = new Intent(MainActivity.this, EditorActivity.class); 
       Uri uri = Uri.parse(NotesProvider.CONTENT_URI + "/" + id); 
       intent.putExtra(NotesProvider.CONTENT_ITEM_TYPE, uri); 
       startActivityForResult(intent, EDITOR_REQUEST_CODE); 
      } 
     }); 

     getLoaderManager().initLoader(0, null, this); 

    } 

    //Search bar call 

    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     MenuInflater inflater = getMenuInflater(); 
     inflater.inflate(R.menu.search_view_menu_item, menu); 
     MenuItem searchViewItem = menu.findItem(R.id.action_search); 
     SearchView searchViewAndroidActionBar = (SearchView) searchViewItem.getActionView(); 
     searchViewAndroidActionBar.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
      @Override 
      public boolean onQueryTextSubmit(String query) { 
       //searchViewAndroidActionBar.clearFocus(); 
       return true; 
      } 

      @Override 
      public boolean onQueryTextChange(String newText) { 
       cursorAdapter.getFilter().filter(newText); 

       return false; 
      } 
     }); 
     return super.onCreateOptionsMenu(menu); 
    } 

Et voici ma classe NotesCursorAdapter

public class NotesCursorAdapter extends CursorAdapter { 
    public NotesCursorAdapter(Context context, Cursor c, int flags) { 
     super(context, c, flags); 
    } 

    @Override 
    public View newView(Context context, Cursor cursor, ViewGroup parent) { 
     return LayoutInflater.from(context).inflate(R.layout.note_list_item, parent, false); 

    } 

    @Override 
    public void bindView(View view, Context context, Cursor cursor) { 

     String noteText = cursor.getString(cursor.getColumnIndex(DBOpenHelper.NOTE_TEXT)); 

     int pos = noteText.indexOf(10); 
     if (pos != - 1){ 
      noteText = noteText.substring(0, pos) + "..."; 
     } 

     TextView tv = (TextView) view.findViewById(R.id.tvNote); 
     tv.setText(noteText); 

    } 
} 

Ce qui précède est le code que je comptais faire fonctionnalité SearchView mais je ne peux pas le faire fonctionner.

+0

Est-ce votre code implémenté ou vous essayez de mettre en œuvre à partir d'un tutoriel? –

+0

J'ai dérivé les codes ci-dessus basé sur le tutoriel et mettre en œuvre mon apprentissage dans le cadre de mon exercice pour déterminer jusqu'où je peux aller avec android. Je demande une solution pour faire avancer mon apprentissage. –

Répondre

0

Vous pouvez ajouter le SearchView dans la barre d'outils dans le fichier youractivity.xml comme celui-ci

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.AppBarLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content"> 

    <android.support.v7.widget.Toolbar 
     android:id="@+id/toolbar" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"> 

     <SearchView 
      android:id="@+id/searchView" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:iconifiedByDefault="false" 
      android:queryHint="Search" 
      android:layout_centerHorizontal="true" /> 
    </android.support.v7.widget.Toolbar> 

</android.support.design.widget.AppBarLayout> 

Ensuite, vous devez jeter SearchView dans votre code et faire des fonctionnalités en fonction de vos besoins. Voir la même question Here