Android Open Source - PlayTunes Search Suggestions Fragment






From Project

Back to project page PlayTunes.

License

The source code is released under:

Copyright (c) 2014, Impeccable Labs, LLC. All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions ar...

If you think the Android project PlayTunes listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package com.ideabag.playtunes.fragment.search;
//from  w  w w.  jav a  2s. co m
import com.google.android.gms.analytics.HitBuilders;
import com.google.android.gms.analytics.Tracker;
import com.google.gson.Gson;
import com.ideabag.playtunes.R;
import com.ideabag.playtunes.fragment.SaveScrollListFragment;
import com.ideabag.playtunes.util.SearchHistory;
import com.ideabag.playtunes.util.TrackerSingleton;
import com.ideabag.playtunes.util.GAEvent.Categories;
import com.ideabag.playtunes.util.GAEvent.Playlist;

import android.content.Context;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;

public class SearchSuggestionsFragment extends Fragment implements ListView.OnItemClickListener {
  
  public static final String TAG = "Search Suggestions Fragment";
  
  SearchFragment mSearchFragment;
  ListView mListView;
  
  private Button mButtonClearHistory;
  
  SharedPreferences mSharedPrefs;
  
  ArrayAdapter < String > adapter;
  String[] mSearchQueries = null;
  
  private Tracker mTracker;
  
  public SearchSuggestionsFragment() {
    
    
    
  }
  
  public SearchSuggestionsFragment( SearchFragment parentFragment ) {
    
    mSearchFragment = parentFragment;
    
  }
  
  private void loadSearchHistory() {
    
    Gson gson = new Gson();
    String searchHistoryString = mSharedPrefs.getString( getString( R.string.pref_key_search_history ), "[]" );
    
    String[] mSearchQueries = gson.fromJson( searchHistoryString, String[].class);
    
    if ( null != mSearchQueries ) {
      
      adapter = new ArrayAdapter < String >( getActivity(), R.layout.list_item_title, R.id.Title, mSearchQueries );
      mListView.setAdapter( adapter );
      
      if ( this.isResumed() ) {
        
        //restoreScrollPosition();
        
      }
      
    }
    
      if ( adapter.getCount() >= 1 ) {
        
        mButtonClearHistory.setVisibility( View.VISIBLE );
        
      } else {
        
        mButtonClearHistory.setVisibility( View.GONE );
      }
    
  }
  
  @Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState ) {
    
    return inflater.inflate( R.layout.fragment_search_suggestions, container, false );
    
  }
  
  @Override public void onActivityCreated( Bundle savedInstanceState ) {
    super.onActivityCreated( savedInstanceState );
    
    mSharedPrefs = getActivity().getSharedPreferences( getString( R.string.prefs_file ), Context.MODE_PRIVATE );
    mSharedPrefs.registerOnSharedPreferenceChangeListener( mPreferencesChangeListener );
    
    mListView = ( ListView ) getView().findViewById( R.id.SuggestionListView );
    mButtonClearHistory = ( Button ) getView().findViewById( R.id.ButtonClearHistory );
      
      
      mListView.setDivider( getResources().getDrawable( R.drawable.list_divider ) );
      mListView.setDividerHeight( 1 );
      
      mListView.setOnItemClickListener( this );
      
    mTracker = TrackerSingleton.getDefaultTracker( getActivity() );
    
    loadSearchHistory();
      
    mButtonClearHistory.setOnClickListener( new OnClickListener() {

      @Override public void onClick( View v ) {
        
        clearSearchHistory();
        
      }
      
    });
    
  }
  
  @Override public void onResume() {
    super.onResume();
    
    mTracker.setScreenName( TAG );
    
    mTracker.send( new HitBuilders.AppViewBuilder().build() );
    
    mTracker.send( new HitBuilders.EventBuilder()
      .setCategory( Categories.PLAYLIST )
      .setAction( Playlist.ACTION_SHOWLIST )
      .setValue( adapter.getCount() )
      .build());
    
  }
  
  @Override public void onDestroy() {
    super.onDestroy();
    
    if ( mSharedPrefs != null ) {
      
      mSharedPrefs.unregisterOnSharedPreferenceChangeListener( mPreferencesChangeListener );
      
    }
    
  }
  
  @Override public void onItemClick(AdapterView<?> list, View v, int position, long id ) {
    
    String mSearchTerm = ( String ) adapter.getItem( position );
      
    mSearchFragment.mQueryTextView.setText( mSearchTerm );
    mSearchFragment.setMediaID( mSearchTerm );
    
    mTracker.send( new HitBuilders.EventBuilder()
      .setCategory( Categories.PLAYLIST )
      .setAction( Playlist.ACTION_CLICK )
      .setValue( position )
      .build());
    
  }
  
  private void clearSearchHistory() {
    
    SearchHistory.clearHistory( getActivity() );
    adapter.notifyDataSetChanged();
    
    if ( adapter.getCount() > 0 ) {
      
      mButtonClearHistory.setVisibility( View.VISIBLE );
      
    } else {
      
      mButtonClearHistory.setVisibility( View.GONE );
      
    }
    
    mTracker.send( new HitBuilders.EventBuilder()
      .setCategory( Categories.PLAYLIST )
      .setAction( Playlist.ACTION_SHOWLIST )
      .setValue( adapter.getCount() )
      .build());
    
  }
  
  SharedPreferences.OnSharedPreferenceChangeListener mPreferencesChangeListener = new SharedPreferences.OnSharedPreferenceChangeListener() {
    
    @Override public void onSharedPreferenceChanged( SharedPreferences sharedPreferences, String key ) {
      
      if ( key.equals( getString( R.string.pref_key_search_history ) ) ) {
        
        loadSearchHistory();
        
      }
      
    }
    
  };

}




Java Source Code List

com.ideabag.playtunes.PlaylistManager.java
com.ideabag.playtunes.DragNDrop.DragListener.java
com.ideabag.playtunes.DragNDrop.DragNDropListView.java
com.ideabag.playtunes.DragNDrop.DropListener.java
com.ideabag.playtunes.DragNDrop.RemoveListener.java
com.ideabag.playtunes.activity.MainActivity.java
com.ideabag.playtunes.activity.NowPlayingActivity.java
com.ideabag.playtunes.activity.SettingsActivity.java
com.ideabag.playtunes.adapter.AlbumListAdapter.java
com.ideabag.playtunes.adapter.AlbumsAllAdapter.java
com.ideabag.playtunes.adapter.AlbumsOneAdapter.java
com.ideabag.playtunes.adapter.ArtistAlbumsAdapter.java
com.ideabag.playtunes.adapter.ArtistAllSongsAdapter.java
com.ideabag.playtunes.adapter.ArtistListAdapter.java
com.ideabag.playtunes.adapter.ArtistSinglesAdapter.java
com.ideabag.playtunes.adapter.ArtistsAllAdapter.java
com.ideabag.playtunes.adapter.AsyncQueryAdapter.java
com.ideabag.playtunes.adapter.GenresAllAdapter.java
com.ideabag.playtunes.adapter.GenresOneAdapter.java
com.ideabag.playtunes.adapter.NavigationListAdapter.java
com.ideabag.playtunes.adapter.PlaylistsAllAdapter.java
com.ideabag.playtunes.adapter.PlaylistsOneAdapter.java
com.ideabag.playtunes.adapter.SongListAdapter.java
com.ideabag.playtunes.adapter.SongsAllAdapter.java
com.ideabag.playtunes.adapter.search.SearchAlbumsAdapter.java
com.ideabag.playtunes.adapter.search.SearchArtistsAdapter.java
com.ideabag.playtunes.adapter.search.SearchSongsAdapter.java
com.ideabag.playtunes.database.MediaQuery.java
com.ideabag.playtunes.dialog.AddToPlaylistDialogFragment.java
com.ideabag.playtunes.dialog.CreatePlaylistDialogFragment.java
com.ideabag.playtunes.dialog.FeedbackDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistDeleteDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistMenuDialogFragment.java
com.ideabag.playtunes.dialog.PlaylistRenameDialogFragment.java
com.ideabag.playtunes.dialog.RateAppDialogFragment.java
com.ideabag.playtunes.dialog.SongMenuDialogFragment.java
com.ideabag.playtunes.fragment.AlbumsAllFragment.java
com.ideabag.playtunes.fragment.AlbumsOneFragment.java
com.ideabag.playtunes.fragment.ArtistSinglesFragment.java
com.ideabag.playtunes.fragment.ArtistsAllFragment.java
com.ideabag.playtunes.fragment.ArtistsOneFragment.java
com.ideabag.playtunes.fragment.FooterControlsFragment.java
com.ideabag.playtunes.fragment.GenresAllFragment.java
com.ideabag.playtunes.fragment.GenresOneFragment.java
com.ideabag.playtunes.fragment.MusicBrowserFragment.java
com.ideabag.playtunes.fragment.NavigationDrawerFragment.java
com.ideabag.playtunes.fragment.NavigationFragment.java
com.ideabag.playtunes.fragment.PlaylistsAllFragment.java
com.ideabag.playtunes.fragment.PlaylistsOneFragment.java
com.ideabag.playtunes.fragment.SaveScrollListFragment.java
com.ideabag.playtunes.fragment.SongsFragment.java
com.ideabag.playtunes.fragment.TrackProgressFragment.java
com.ideabag.playtunes.fragment.search.SearchAlbumsFragment.java
com.ideabag.playtunes.fragment.search.SearchAllFragment.java
com.ideabag.playtunes.fragment.search.SearchArtistsFragment.java
com.ideabag.playtunes.fragment.search.SearchFragment.java
com.ideabag.playtunes.fragment.search.SearchSongsFragment.java
com.ideabag.playtunes.fragment.search.SearchSuggestionsFragment.java
com.ideabag.playtunes.media.AudioFocusHelper.java
com.ideabag.playtunes.media.MusicFocusable.java
com.ideabag.playtunes.media.MusicIntentReceiver.java
com.ideabag.playtunes.media.PlaylistMediaPlayer.java
com.ideabag.playtunes.media.RemoteControlClientCompat.java
com.ideabag.playtunes.media.RemoteControlHelper.java
com.ideabag.playtunes.service.LockscreenManager.java
com.ideabag.playtunes.service.MusicPlayerService.java
com.ideabag.playtunes.service.PlaybackNotification.java
com.ideabag.playtunes.util.AdmobUtil.java
com.ideabag.playtunes.util.AlbumSongsCountTask.java
com.ideabag.playtunes.util.AsyncDrawable.java
com.ideabag.playtunes.util.BitmapWorkerTask.java
com.ideabag.playtunes.util.CheckRemoteVersionFileTask.java
com.ideabag.playtunes.util.DrawerLayout.java
com.ideabag.playtunes.util.GAEvent.java
com.ideabag.playtunes.util.IMusicBrowser.java
com.ideabag.playtunes.util.ISearchableAdapter.java
com.ideabag.playtunes.util.LoadAlbumStackTask.java
com.ideabag.playtunes.util.MergeAdapter.java
com.ideabag.playtunes.util.QueryCountTask.java
com.ideabag.playtunes.util.SackOfViewsAdapter.java
com.ideabag.playtunes.util.SearchHistory.java
com.ideabag.playtunes.util.StarToggleTask.java
com.ideabag.playtunes.util.TrackerSingleton.java