2017-07-16 153 views
0

我很困惑如何使android欄中的searchview。這是現在停留在這種情況下的兩天。如果有人能幫助我與我下面的代碼:SearchView in Android酒吧

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); 
    } 

在這裏,我的課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); 

    } 
} 

以上是我打算做搜索查看功能的代碼,但我不能讓它工作。

+0

這是你實現的代碼,或者你試圖從教程中實現? – 2017-07-16 05:02:51

+0

我根據教程推導了上面的代碼,並將我的學習作爲我的練習的一部分,以確定我可以使用android進行多遠。我要求解決方案,以使我的學習推動。 –

回答

0

你可以這樣

<?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> 

然後,你需要根據自己的需要投搜索查看你的代碼,做功能在youractivity.xml文件中添加搜索查看工具欄。看到類似的問題Here