Change DownloadsFragment to extend AbsLibraryPagerRecyclerViewCustomGridSizeFragment and add DownloadsAdapter.
This commit is contained in:
parent
3a0154deea
commit
cd0971bf14
4 changed files with 191 additions and 27 deletions
|
|
@ -0,0 +1,69 @@
|
|||
package org.adrianvictor.geleia.adapter;
|
||||
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
import android.widget.ImageView;
|
||||
import android.widget.TextView;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.recyclerview.widget.RecyclerView;
|
||||
|
||||
import org.adrianvictor.geleia.R;
|
||||
import org.adrianvictor.geleia.model.Song;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DownloadsAdapter extends RecyclerView.Adapter<DownloadsAdapter.ViewHolder> {
|
||||
private final List<Song> mSongs;
|
||||
private final int mLayoutId;
|
||||
|
||||
public DownloadsAdapter(int layoutId) {
|
||||
mLayoutId = layoutId;
|
||||
this.mSongs = new ArrayList<>();
|
||||
}
|
||||
|
||||
public void swapDataSet(List<Song> newSongs) {
|
||||
mSongs.clear();
|
||||
if (newSongs != null) {
|
||||
mSongs.addAll(newSongs);
|
||||
}
|
||||
notifyDataSetChanged();
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
public DownloadsAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
|
||||
View view = LayoutInflater.from(parent.getContext()).inflate(mLayoutId, parent, false);
|
||||
return new ViewHolder(view);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onBindViewHolder(@NonNull DownloadsAdapter.ViewHolder holder, int position) {
|
||||
final Song song = mSongs.get(position);
|
||||
|
||||
holder.title.setText(song.title);
|
||||
holder.artist.setText(song.artistName);
|
||||
|
||||
// TODO: Load album cover into holder.cover using a library like Glide or Picasso
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getItemCount() {
|
||||
return mSongs.size();
|
||||
}
|
||||
|
||||
public static class ViewHolder extends RecyclerView.ViewHolder {
|
||||
public final TextView title;
|
||||
public final TextView artist;
|
||||
public final ImageView cover;
|
||||
|
||||
public ViewHolder(View itemView) {
|
||||
super(itemView);
|
||||
title = itemView.findViewById(R.id.title);
|
||||
artist = itemView.findViewById(R.id.text);
|
||||
cover = itemView.findViewById(R.id.image);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,25 +1,124 @@
|
|||
package org.adrianvictor.geleia.fragments.library;
|
||||
|
||||
import android.os.Bundle;
|
||||
import android.view.LayoutInflater;
|
||||
import android.view.View;
|
||||
import android.view.ViewGroup;
|
||||
|
||||
import androidx.annotation.NonNull;
|
||||
import androidx.annotation.Nullable;
|
||||
import androidx.fragment.app.Fragment;
|
||||
import androidx.recyclerview.widget.GridLayoutManager;
|
||||
|
||||
import org.adrianvictor.geleia.R;
|
||||
|
||||
public class DownloadsFragment extends Fragment {
|
||||
public static DownloadsFragment newInstance() {
|
||||
return new DownloadsFragment();
|
||||
}
|
||||
import org.adrianvictor.geleia.adapter.DownloadsAdapter;
|
||||
|
||||
@Nullable
|
||||
import org.adrianvictor.geleia.model.Song;
|
||||
import org.adrianvictor.geleia.model.SortMethod;
|
||||
import org.adrianvictor.geleia.model.SortOrder;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DownloadsFragment extends AbsLibraryPagerRecyclerViewCustomGridSizeFragment<DownloadsAdapter, GridLayoutManager, Void> {
|
||||
@NonNull
|
||||
@Override
|
||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
||||
return inflater.inflate(R.layout.downloads_fragment, container, false);
|
||||
protected DownloadsAdapter createAdapter() {
|
||||
return new DownloadsAdapter(getItemLayoutRes());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected GridLayoutManager createLayoutManager() {
|
||||
return new GridLayoutManager(getActivity(), getGridSize());
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected Void createQuery() {
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void loadItems(int index) {
|
||||
List<Song> dummySongs = new ArrayList<>();
|
||||
|
||||
Song song1 = new Song();
|
||||
song1.title = "Dummy Song Title";
|
||||
song1.artistName = "A. Dummy Artist";
|
||||
|
||||
dummySongs.add(song1);
|
||||
|
||||
Song song2 = new Song();
|
||||
song2.title = "Another Test Song";
|
||||
song2.artistName = "The Testers";
|
||||
dummySongs.add(song2);
|
||||
|
||||
getActivity().runOnUiThread(() -> {
|
||||
getAdapter().swapDataSet(dummySongs);
|
||||
});
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int loadGridSize() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSize(int gridColumns) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected int loadGridSizeLand() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveGridSizeLand(int gridColumns) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveUsePalette(boolean usePalette) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean loadUsePalette() {
|
||||
return false;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setUsePalette(boolean usePalette) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setGridSize(int gridSize) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SortMethod loadSortMethod() {
|
||||
return SortMethod.ADDED;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveSortMethod(SortMethod sortMethod) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setSortMethod(SortMethod sortMethod) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected SortOrder loadSortOrder() {
|
||||
return SortOrder.ASCENDING;
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void saveSortOrder(SortOrder sortOrder) {
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void setSortOrder(SortOrder sortOrder) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -110,20 +110,9 @@ public final class PreferenceUtil {
|
|||
}
|
||||
};
|
||||
|
||||
private static final PreferenceMigration Migration3 = new PreferenceMigration(2, 3) {
|
||||
@Override
|
||||
public void migrate(SharedPreferences preferences) {
|
||||
String currentCategories = preferences.getString(CATEGORIES, "");
|
||||
if (!currentCategories.toUpperCase().contains(Category.DOWNLOADS.toString())) {
|
||||
preferences.edit().putString(CATEGORIES, currentCategories + "." + Category.DOWNLOADS.toString()).commit();
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
private static final List<PreferenceMigration> migrations = Arrays.asList(
|
||||
Migration1,
|
||||
Migration2,
|
||||
Migration3
|
||||
Migration2
|
||||
);
|
||||
|
||||
private static PreferenceUtil instance;
|
||||
|
|
|
|||
|
|
@ -1,6 +1,13 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
tools:context="org.adrianvictor.geleia.fragments.library.DownloadsFragment">
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:layout_width="409dp"
|
||||
android:layout_height="729dp"
|
||||
tools:layout_editor_absoluteX="1dp"
|
||||
tools:layout_editor_absoluteY="1dp" />
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
Loading…
Add table
Add a link
Reference in a new issue