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.wm.remusic.activity; import android.content.Context; import android.os.AsyncTask; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentTransaction; 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.google.gson.Gson; import com.google.gson.JsonArray; import com.google.gson.JsonElement; import com.google.gson.JsonObject; import com.readystatesoftware.systembartint.SystemBarTintManager; import com.wm.remusic.R; import com.wm.remusic.adapter.SearchAdapter; import com.wm.remusic.fragmentnet.SearchTabPagerFragment; import com.wm.remusic.info.MusicInfo; import com.wm.remusic.json.SearchAlbumInfo; import com.wm.remusic.json.SearchArtistInfo; import com.wm.remusic.json.SearchSongInfo; import com.wm.remusic.net.BMA; import com.wm.remusic.net.HttpUtil; import com.wm.remusic.provider.SearchHistory; import com.wm.remusic.uitl.CommonUtils; import com.wm.remusic.uitl.SearchUtils; import java.util.ArrayList; import java.util.Collections; import java.util.List; import java.util.Set; public class NetSearchActivity extends AppCompatActivity implements SearchView.OnQueryTextListener, View.OnTouchListener { private SearchView mSearchView; private InputMethodManager mImm; private String queryString; private SearchAdapter adapter; private RecyclerView recyclerView; private List searchResults = Collections.emptyList(); private ArrayList<SearchSongInfo> songList = new ArrayList<>(); @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_search); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); toolbar.setPadding(0, CommonUtils.getStatusHeight(this), 0, 0); setSupportActionBar(toolbar); getSupportActionBar().setDisplayHomeAsUpEnabled(true); Fragment f = new Fragment(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); ft.add(R.id.search_frame, f); ft.commit(); 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)); 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_net_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) { hideInputManager(); FragmentTransaction ft = getSupportFragmentManager().beginTransaction(); SearchTabPagerFragment fragment = SearchTabPagerFragment.newInstance(0, query); ft.replace(R.id.search_frame, fragment).commitAllowingStateLoss(); 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(); } }