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;
|
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.NonNull;
|
||||||
import androidx.annotation.Nullable;
|
import androidx.recyclerview.widget.GridLayoutManager;
|
||||||
import androidx.fragment.app.Fragment;
|
|
||||||
|
|
||||||
import org.adrianvictor.geleia.R;
|
|
||||||
|
|
||||||
public class DownloadsFragment extends Fragment {
|
import org.adrianvictor.geleia.adapter.DownloadsAdapter;
|
||||||
public static DownloadsFragment newInstance() {
|
|
||||||
return new DownloadsFragment();
|
|
||||||
}
|
|
||||||
|
|
||||||
@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
|
@Override
|
||||||
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
|
protected DownloadsAdapter createAdapter() {
|
||||||
return inflater.inflate(R.layout.downloads_fragment, container, false);
|
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(
|
private static final List<PreferenceMigration> migrations = Arrays.asList(
|
||||||
Migration1,
|
Migration1,
|
||||||
Migration2,
|
Migration2
|
||||||
Migration3
|
|
||||||
);
|
);
|
||||||
|
|
||||||
private static PreferenceUtil instance;
|
private static PreferenceUtil instance;
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,13 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
<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_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>
|
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||||
Loading…
Add table
Add a link
Reference in a new issue