Java tutorial
/* * Copyright (C) 2015 Naman Dwivedi * * Licensed under the GNU General Public License v3 * * This is free software: you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or (at your option) any later version. * * This software is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU General Public License for more details. */ package com.cloud9.netmusic.activity; import android.content.Context; import android.os.Bundle; import android.support.v4.view.MenuItemCompat; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.SearchView; import android.support.v7.widget.Toolbar; import android.view.Menu; import android.view.MenuItem; import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; import com.cloud9.netmusic.adapter.SearchAdapter; import com.cloud9.netmusic.info.MusicInfo; import com.cloud9.netmusic.provider.SearchHistory; import com.cloud9.netmusic.uitl.CommonUtils; import com.cloud9.netmusic.uitl.SearchUtils; import com.cloud9.remusic.R; import java.util.ArrayList; import java.util.List; public class LocalSearchActivity extends AppCompatActivity implements SearchView.OnQueryTextListener, View.OnTouchListener { private SearchView mSearchView; private InputMethodManager mImm; private String queryString; private SearchAdapter adapter; private RecyclerView recyclerView; private List<MusicInfo> searchResults = new ArrayList<>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_local_search); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setPadding(0, CommonUtils.getStatusHeight(this), 0, 0); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); // SystemBarTintManager tintManager = new SystemBarTintManager(this); // // enable status bar tint // tintManager.setStatusBarTintEnabled(true); // // enable navigation bar tint // tintManager.setNavigationBarTintEnabled(true); mImm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); recyclerView = (RecyclerView) findViewById(R.id.recyclerview); recyclerView.setLayoutManager(new LinearLayoutManager(this)); recyclerView.setHasFixedSize(true); adapter = new SearchAdapter(this); recyclerView.setAdapter(adapter); } @Override public boolean onCreateOptionsMenu(final Menu menu) { getMenuInflater().inflate(R.menu.menu_search, menu); mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.menu_search)); mSearchView.setOnQueryTextListener(this); mSearchView.setQueryHint(getResources().getString(R.string.search_local_music)); mSearchView.setIconifiedByDefault(false); mSearchView.setIconified(false); MenuItemCompat.setOnActionExpandListener(menu.findItem(R.id.menu_search), new MenuItemCompat.OnActionExpandListener() { @Override public boolean onMenuItemActionExpand(MenuItem item) { return true; } @Override public boolean onMenuItemActionCollapse(MenuItem item) { finish(); return false; } }); menu.findItem(R.id.menu_search).expandActionView(); return super.onCreateOptionsMenu(menu); } @Override public boolean onOptionsItemSelected(final MenuItem item) { switch (item.getItemId()) { case android.R.id.home: finish(); return true; default: break; } return super.onOptionsItemSelected(item); } @Override public boolean onQueryTextSubmit(final String query) { onQueryTextChange(query); hideInputManager(); return true; } @Override public boolean onQueryTextChange(final String newText) { if (newText.equals(queryString)) { return true; } queryString = newText; if (!queryString.trim().equals("")) { this.searchResults = new ArrayList(); List<MusicInfo> songList = SearchUtils.searchSongs(this, queryString); searchResults.addAll((songList.size() < 10 ? songList : songList.subList(0, 10))); } else { searchResults.clear(); adapter.updateSearchResults(searchResults); adapter.notifyDataSetChanged(); } adapter.updateSearchResults(searchResults); adapter.notifyDataSetChanged(); return true; } @Override public boolean onTouch(View v, MotionEvent event) { hideInputManager(); return false; } public void hideInputManager() { if (mSearchView != null) { if (mImm != null) { mImm.hideSoftInputFromWindow(mSearchView.getWindowToken(), 0); } mSearchView.clearFocus(); SearchHistory.getInstance(this).addSearchString(queryString); } } @Override public void onStop() { super.onStop(); finish(); } }