@Override public void onItemClicked(UpdateView<Artist> updateView, Artist artist) { SubsonicFragment fragment = new SelectDirectoryFragment(); Bundle args = new Bundle(); args.putString(Constants.INTENT_EXTRA_NAME_ID, artist.getId()); args.putString(Constants.INTENT_EXTRA_NAME_NAME, artist.getName()); args.putBoolean(Constants.INTENT_EXTRA_NAME_ARTIST, true); fragment.setArguments(args); replaceFragment(fragment); }
@Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Artist artist = (Artist) parent.getItemAtPosition(position); SubsonicFragment fragment = new SelectDirectoryFragment(); Bundle args = new Bundle(); args.putString(Constants.INTENT_EXTRA_NAME_ID, artist.getId()); args.putString(Constants.INTENT_EXTRA_NAME_NAME, artist.getName()); args.putBoolean(Constants.INTENT_EXTRA_NAME_ARTIST, true); fragment.setArguments(args); replaceFragment(fragment); }
private Cursor createCursor(String query, SearchResult searchResult) { MatrixCursor cursor = new MatrixCursor(COLUMNS); if (searchResult == null) { return cursor; } // Add all results into one pot List<Object> results = new ArrayList<Object>(); results.addAll(searchResult.getArtists()); results.addAll(searchResult.getAlbums()); results.addAll(searchResult.getSongs()); // For each, calculate its string distance to the query for (Object obj : results) { if (obj instanceof Artist) { Artist artist = (Artist) obj; artist.setCloseness(Util.getStringDistance(query, artist.getName())); } else { MusicDirectory.Entry entry = (MusicDirectory.Entry) obj; entry.setCloseness(Util.getStringDistance(query, entry.getTitle())); } } // Sort based on the closeness paramater Collections.sort( results, new Comparator<Object>() { @Override public int compare(Object lhs, Object rhs) { // Get the closeness of the two objects int left, right; boolean leftArtist = lhs instanceof Artist; boolean rightArtist = rhs instanceof Artist; if (leftArtist) { left = ((Artist) lhs).getCloseness(); } else { left = ((MusicDirectory.Entry) lhs).getCloseness(); } if (rightArtist) { right = ((Artist) rhs).getCloseness(); } else { right = ((MusicDirectory.Entry) rhs).getCloseness(); } if (left == right) { if (leftArtist && rightArtist) { return 0; } else if (leftArtist) { return -1; } else if (rightArtist) { return 1; } else { return 0; } } else if (left > right) { return 1; } else { return -1; } } }); // Done sorting, add results to cursor for (Object obj : results) { if (obj instanceof Artist) { Artist artist = (Artist) obj; String icon = RESOURCE_PREFIX + R.drawable.ic_action_artist; cursor.addRow( new Object[] { artist.getId().hashCode(), artist.getName(), null, "ar-" + artist.getId(), artist.getName(), icon }); } else { MusicDirectory.Entry entry = (MusicDirectory.Entry) obj; if (entry.isDirectory()) { String icon = RESOURCE_PREFIX + R.drawable.ic_action_album; cursor.addRow( new Object[] { entry.getId().hashCode(), entry.getTitle(), entry.getArtist(), entry.getId(), entry.getTitle(), icon }); } else { String icon = RESOURCE_PREFIX + R.drawable.ic_action_song; String id; if (Util.isTagBrowsing(getContext())) { id = entry.getAlbumId(); } else { id = entry.getParent(); } cursor.addRow( new Object[] { entry.getId().hashCode(), entry.getTitle(), entry.getArtist(), "so-" + id, entry.getTitle(), icon }); } } } return cursor; }