I'm having problem sorting the song list on my music player application. Here's the code:
public ArrayList<HashMap<String, String>> songsList = new ArrayList<HashMap<String, String>>();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.playlist);
ArrayList<HashMap<String, String>> songsListData = new ArrayList<HashMap<String, String>>();
SongsManager plm = new SongsManager();
// get all songs from sdcard
this.songsList = plm.getPlayList();
// looping through playlist
for (int i = 0; i < songsList.size(); i++) {
// creating new HashMap
HashMap<String, String> song = songsList.get(i);
// adding HashList to ArrayList
songsListData.add(song);
Collections.sort(songsListData); << The problem is in this line
}
.
.
.
.
.
}
It gives out this error: "Bound mismatch: The generic method sort(List) of type Collections is not applicable for the arguments (ArrayList>). The inferred type HashMap is not a valid substitute for the bounded parameter >"
Can anyone help me fix this? Thanks in advance
EDIT: So based on Paresh I've changed it to:
Collections.sort(songsListData, new myOwnComparator());
public class myOwnComparator implements Comparator<HashMap<String, String>> {
public myOwnComparator() {
// TODO Auto-generated constructor stub
}
public int compare(HashMap<String, String> o1, HashMap<String, String> o2) {
return o1.get("KeyName").compareTo(o2.get("KeyName"));
}
}
But it still doesnt work. Here's the log cat:
11-12 12:49:09.450: D/dalvikvm(6584): GC_EXTERNAL_ALLOC freed 151K, 52% free 2662K/5447K, external 903K/1034K, paused 23ms 11-12 12:49:09.505: D/AndroidRuntime(6584): Shutting down VM 11-12 12:49:09.510: W/dalvikvm(6584): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 11-12 12:49:09.515: E/AndroidRuntime(6584): FATAL EXCEPTION: main 11-12 12:49:09.515: E/AndroidRuntime(6584): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.musicshare/com.example.musicshare.PlayListActivity}: java.lang.NullPointerException 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.os.Handler.dispatchMessage(Handler.java:99) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.os.Looper.loop(Looper.java:123) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.app.ActivityThread.main(ActivityThread.java:3691) 11-12 12:49:09.515: E/AndroidRuntime(6584): at java.lang.reflect.Method.invokeNative(Native Method) 11-12 12:49:09.515: E/AndroidRuntime(6584): at java.lang.reflect.Method.invoke(Method.java:507) 11-12 12:49:09.515: E/AndroidRuntime(6584): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 11-12 12:49:09.515: E/AndroidRuntime(6584): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 11-12 12:49:09.515: E/AndroidRuntime(6584): at dalvik.system.NativeStart.main(Native Method) 11-12 12:49:09.515: E/AndroidRuntime(6584): Caused by: java.lang.NullPointerException 11-12 12:49:09.515: E/AndroidRuntime(6584): at com.example.musicshare.PlayListActivity$myOwnComparator.compare(PlayListActivity.java:103) 11-12 12:49:09.515: E/AndroidRuntime(6584): at com.example.musicshare.PlayListActivity$myOwnComparator.compare(PlayListActivity.java:1) 11-12 12:49:09.515: E/AndroidRuntime(6584): at java.util.TimSort.countRunAndMakeAscending(TimSort.java:320) 11-12 12:49:09.515: E/AndroidRuntime(6584): at java.util.TimSort.sort(TimSort.java:199) 11-12 12:49:09.515: E/AndroidRuntime(6584): at java.util.TimSort.sort(TimSort.java:169) 11-12 12:49:09.515: E/AndroidRuntime(6584): at java.util.Arrays.sort(Arrays.java:2090) 11-12 12:49:09.515: E/AndroidRuntime(6584): at java.util.Collections.sort(Collections.java:1965) 11-12 12:49:09.515: E/AndroidRuntime(6584): at com.example.musicshare.PlayListActivity.onCreate(PlayListActivity.java:61) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-12 12:49:09.515: E/AndroidRuntime(6584): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 11-12 12:49:09.515: E/AndroidRuntime(6584): ... 11 more 11-12 12:50:21.790: D/dalvikvm(6717): GC_EXTERNAL_ALLOC freed 152K, 52% free 2663K/5447K, external 1015K/1034K, paused 52ms 11-12 12:50:21.840: D/AndroidRuntime(6717): Shutting down VM 11-12 12:50:21.850: W/dalvikvm(6717): threadid=1: thread exiting with uncaught exception (group=0x4001e578) 11-12 12:50:21.855: E/AndroidRuntime(6717): FATAL EXCEPTION: main 11-12 12:50:21.855: E/AndroidRuntime(6717): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.musicshare/com.example.musicshare.PlayListActivity}: java.lang.NullPointerException 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.os.Handler.dispatchMessage(Handler.java:99) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.os.Looper.loop(Looper.java:123) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.app.ActivityThread.main(ActivityThread.java:3691) 11-12 12:50:21.855: E/AndroidRuntime(6717): at java.lang.reflect.Method.invokeNative(Native Method) 11-12 12:50:21.855: E/AndroidRuntime(6717): at java.lang.reflect.Method.invoke(Method.java:507) 11-12 12:50:21.855: E/AndroidRuntime(6717): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:847) 11-12 12:50:21.855: E/AndroidRuntime(6717): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:605) 11-12 12:50:21.855: E/AndroidRuntime(6717): at dalvik.system.NativeStart.main(Native Method) 11-12 12:50:21.855: E/AndroidRuntime(6717): Caused by: java.lang.NullPointerException 11-12 12:50:21.855: E/AndroidRuntime(6717): at com.example.musicshare.PlayListActivity$myOwnComparator.compare(PlayListActivity.java:103) 11-12 12:50:21.855: E/AndroidRuntime(6717): at com.example.musicshare.PlayListActivity$myOwnComparator.compare(PlayListActivity.java:1) 11-12 12:50:21.855: E/AndroidRuntime(6717): at java.util.TimSort.countRunAndMakeAscending(TimSort.java:320) 11-12 12:50:21.855: E/AndroidRuntime(6717): at java.util.TimSort.sort(TimSort.java:199) 11-12 12:50:21.855: E/AndroidRuntime(6717): at java.util.TimSort.sort(TimSort.java:169) 11-12 12:50:21.855: E/AndroidRuntime(6717): at java.util.Arrays.sort(Arrays.java:2090) 11-12 12:50:21.855: E/AndroidRuntime(6717): at java.util.Collections.sort(Collections.java:1965) 11-12 12:50:21.855: E/AndroidRuntime(6717): at com.example.musicshare.PlayListActivity.onCreate(PlayListActivity.java:61) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 11-12 12:50:21.855: E/AndroidRuntime(6717): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 11-12 12:50:21.855: E/AndroidRuntime(6717): ... 11 more