

myListView = (ListView) findViewById(R.id.myListView);
myListView.setFastScrollEnabled(true);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,PLAYLIST);
myListView.setAdapter(arrayAdapter); myListView = (ListView) findViewById(R.id.myListView);
myListView.setFastScrollEnabled(true);
MyIndexerAdapter<String> adapter = new MyIndexerAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,PLAYLIST_SORTED);
myListView.setAdapter(adapter); package tom.mcas;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SectionIndexer;
import android.widget.Toast;
public class playlist extends Activity
{
public String playlistCollection;
public String playMode;
public String sortPlaylist;
//public String[] PLAYLIST;
private dataHelper dh;
ListView myListView;
ArrayList<String> PLAYLIST;
ArrayList<String> PLAYLIST_SORTED;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
//The next two lines removes the application titlebars (must go before setContentView)
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.lists);
this.dh = new dataHelper(this);
SharedPreferences settings = getSharedPreferences("MCAS",0);
playlistCollection = settings.getString("collection","");
sortPlaylist=getResources().getString(R.string.sortPlaylistString);
playMode=settings.getString("playMode","NONE");
PLAYLIST = new ArrayList<String>(this.dh.selectPlaylist(playlistCollection,sortPlaylist,playMode));
if (PLAYLIST.size()==1)
{
//No songs found (because there are no favorites), so abort.
Toast.makeText(this, getResources().getString(R.string.errorFavNoPlaylist), Toast.LENGTH_LONG).show();
finish();
}
else
{
if (PLAYLIST.size()==2)
{
//Only one song in the list, so auto-select it and save to preferences
Toast.makeText(this, PLAYLIST.get(1) + " " + getResources().getString(R.string.autoSelectedString), Toast.LENGTH_LONG).show();
SharedPreferences.Editor editor = settings.edit();
editor.putString("playModePosition", "1");
editor.commit();
Intent mainIntent = new Intent(this, play.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity(mainIntent);
finish();
}
myListView = (ListView) findViewById(R.id.myListView);
myListView.setFastScrollEnabled(true);
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,PLAYLIST);
myListView.setAdapter(arrayAdapter);
myListView.setOnItemClickListener(new OnItemClickListener()
{
public void onItemClick(AdapterView<?> arg0, View view, int arg2,long itemID)
{
String chosenSong="";
if (sortPlaylist.length()>0)
chosenSong = PLAYLIST.get(arg2);
else
chosenSong = PLAYLIST_SORTED.get(arg2);
if (chosenSong.equals(sortPlaylist))
{
sortPlaylist="";
PLAYLIST_SORTED = new ArrayList<String>(dh.selectPlaylist(playlistCollection,sortPlaylist,playMode));
myListView = (ListView) findViewById(R.id.myListView);
myListView.setFastScrollEnabled(true);
MyIndexerAdapter<String> adapter = new MyIndexerAdapter<String>(getApplicationContext(), android.R.layout.simple_list_item_1,PLAYLIST_SORTED);
myListView.setAdapter(adapter);
}
else
{
//Save chosen song position in preferences
SharedPreferences settings = getSharedPreferences("MCAS",0);
SharedPreferences.Editor editor = settings.edit();
//If song was chosen from sorted playlist, get song position from original unsorted list
if (sortPlaylist.equals(""))
{
for (int i=0; i < PLAYLIST.size()-1; i=i+1)
{
if (PLAYLIST.get(i).equals(chosenSong))
{
arg2=i;
break;
}
}
}
editor.putString("playModePosition", Integer.toString(arg2));
editor.commit();
Intent mainIntent = new Intent(playlist.this, play.class);
mainIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP );
startActivity(mainIntent);
finish();
}
}
});
}
}
class MyIndexerAdapter<T> extends ArrayAdapter<T> implements SectionIndexer
{
ArrayList<String> myElements;
HashMap<String, Integer> alphaIndexer;
String[] sections;
public MyIndexerAdapter(Context context, int textViewResourceId,List<T> objects)
{
super(context, textViewResourceId, objects);
myElements = (ArrayList<String>) objects;
//here is the tricky stuff
alphaIndexer = new HashMap<String, Integer>();
// in this hashmap we will store here the positions for
// the sections
int size = PLAYLIST_SORTED.size();
for (int i = size - 1; i >= 0; i--)
{
String element = PLAYLIST_SORTED.get(i);
alphaIndexer.put(element.substring(0, 1), i);
//We store the first letter of the word, and its index.
//The Hashmap will replace the value for identical keys are putted in
}
// now we have an hashmap containing for each first-letter
// sections(key), the index(value) in where this sections begins
// we have now to build the sections(letters to be displayed)
// array .it must contains the keys, and must (I do so...) be
// ordered alphabetically
Set<String> keys = alphaIndexer.keySet(); // set of letters ...sets
// cannot be sorted...
Iterator<String> it = keys.iterator();
ArrayList<String> keyList = new ArrayList<String>(); // list can be
// sorted
while (it.hasNext())
{
String key = it.next();
keyList.add(key);
}
Collections.sort(keyList);
sections = new String[keyList.size()]; // simple conversion to an
// array of object
keyList.toArray(sections);
// ooOO00K !
}
//@Override
public int getPositionForSection(int section)
{
// Log.v("getPositionForSection", ""+section);
String letter = sections[section];
return alphaIndexer.get(letter);
}
//@Override
public int getSectionForPosition(int position)
{
// you will notice it will be never called (right?)
// Log.v("getSectionForPosition", "called");
return 0;
}
//@Override
public Object[] getSections()
{
return sections; // to string will be called each object, to display
// the letter
}
}
}

Users browsing this forum: No registered users and 5 guests