package what.whatandroid.bookmarks; import android.content.Context; import android.os.AsyncTask; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.*; import api.bookmarks.Artist; import what.whatandroid.R; import what.whatandroid.callbacks.ViewArtistCallbacks; /** * Displays a list of the user's artist bookmarks */ public class ArtistBookmarkAdapter extends ArrayAdapter<Artist> implements AdapterView.OnItemClickListener { private final LayoutInflater inflater; private ViewArtistCallbacks viewArtist; private BookmarksChangedListener listener; private TextView noBookmarks; public ArtistBookmarkAdapter(Context context, BookmarksChangedListener listener, TextView noBookmarks){ super(context, R.layout.list_torrent_bookmark); inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); this.listener = listener; this.noBookmarks = noBookmarks; try { viewArtist = (ViewArtistCallbacks)context; } catch (ClassCastException e){ throw new ClassCastException(context.toString() + " must implement ViewArtistCallbacks"); } } @Override public View getView(int position, View convertView, ViewGroup parent){ ViewHolder holder; if (convertView != null){ holder = (ViewHolder)convertView.getTag(); } else { convertView = inflater.inflate(R.layout.list_torrent_bookmark, parent, false); holder = new ViewHolder(); holder.title = (TextView)convertView.findViewById(R.id.title); holder.removeBookmark = (ImageButton)convertView.findViewById(R.id.remove_bookmark); holder.removeBookmark.setImageResource(R.drawable.ic_bookmark_24dp); //Hide unused views View year = convertView.findViewById(R.id.year); View tags = convertView.findViewById(R.id.tags); year.setVisibility(View.GONE); tags.setVisibility(View.GONE); convertView.setTag(holder); } final Artist artist = getItem(position); holder.title.setText(artist.getArtistName()); holder.removeBookmark.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v){ new RemoveBookmarkTask().execute(artist); remove(artist); if (getCount() == 0){ noBookmarks.setVisibility(View.VISIBLE); } listener.bookmarksChanged(); } }); return convertView; } @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id){ viewArtist.viewArtist(getItem(position).getArtistId().intValue()); } /** * View holder for the torrent group information */ private static class ViewHolder { public TextView title; public ImageButton removeBookmark; } /** * Async task to unbookmark torrents */ private class RemoveBookmarkTask extends AsyncTask<Artist, Void, Boolean> { @Override protected Boolean doInBackground(Artist... params){ Artist artist = params[0]; return api.torrents.artist.Artist.removeBookmark(artist.getArtistId().intValue()); } @Override protected void onPostExecute(Boolean status){ if (!status){ Toast.makeText(getContext(), "Could not remove bookmark", Toast.LENGTH_SHORT).show(); } } } }