Create adapter in presenter
This commit is contained in:
parent
d7bb4a6a2a
commit
db49c3ee88
4 changed files with 18 additions and 52 deletions
|
@ -9,14 +9,8 @@ import eu.kanade.mangafeed.data.helpers.DatabaseHelper;
|
||||||
import eu.kanade.mangafeed.data.helpers.PreferencesHelper;
|
import eu.kanade.mangafeed.data.helpers.PreferencesHelper;
|
||||||
import eu.kanade.mangafeed.data.models.Manga;
|
import eu.kanade.mangafeed.data.models.Manga;
|
||||||
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
|
import eu.kanade.mangafeed.ui.activity.MangaDetailActivity;
|
||||||
|
import eu.kanade.mangafeed.ui.adapter.LibraryAdapter;
|
||||||
import eu.kanade.mangafeed.view.LibraryView;
|
import eu.kanade.mangafeed.view.LibraryView;
|
||||||
import rx.Observable;
|
|
||||||
import rx.Subscription;
|
|
||||||
import rx.android.schedulers.AndroidSchedulers;
|
|
||||||
import rx.schedulers.Schedulers;
|
|
||||||
import rx.subjects.PublishSubject;
|
|
||||||
import timber.log.Timber;
|
|
||||||
import uk.co.ribot.easyadapter.EasyAdapter;
|
|
||||||
|
|
||||||
import static rx.android.schedulers.AndroidSchedulers.mainThread;
|
import static rx.android.schedulers.AndroidSchedulers.mainThread;
|
||||||
|
|
||||||
|
@ -24,11 +18,10 @@ public class LibraryPresenter extends BasePresenter {
|
||||||
|
|
||||||
private LibraryView view;
|
private LibraryView view;
|
||||||
|
|
||||||
@Inject
|
@Inject DatabaseHelper db;
|
||||||
DatabaseHelper db;
|
@Inject PreferencesHelper prefs;
|
||||||
|
|
||||||
@Inject
|
LibraryAdapter<Manga> adapter;
|
||||||
PreferencesHelper prefs;
|
|
||||||
|
|
||||||
public LibraryPresenter(LibraryView view) {
|
public LibraryPresenter(LibraryView view) {
|
||||||
this.view = view;
|
this.view = view;
|
||||||
|
@ -43,7 +36,7 @@ public class LibraryPresenter extends BasePresenter {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onMangaClick(EasyAdapter<Manga> adapter, int position) {
|
public void onMangaClick(int position) {
|
||||||
Intent intent = MangaDetailActivity.newIntent(
|
Intent intent = MangaDetailActivity.newIntent(
|
||||||
view.getActivity(),
|
view.getActivity(),
|
||||||
adapter.getItem(position)
|
adapter.getItem(position)
|
||||||
|
@ -52,13 +45,17 @@ public class LibraryPresenter extends BasePresenter {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initializeMangas() {
|
public void initializeMangas() {
|
||||||
|
|
||||||
db.manga.get()
|
db.manga.get()
|
||||||
.observeOn(mainThread())
|
.observeOn(mainThread())
|
||||||
.subscribe(view::setMangas);
|
.subscribe(mangas -> {
|
||||||
|
adapter = new LibraryAdapter<>(view.getActivity(), mangas);
|
||||||
|
view.setAdapter(adapter);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public void onQueryTextChange(String query) {
|
public void onQueryTextChange(String query) {
|
||||||
view.getAdapter().getFilter().filter(query);
|
adapter.getFilter().filter(query);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ public class LibraryAdapter<T> extends EasyAdapter<T> implements Filterable {
|
||||||
FilterResults results = new FilterResults();
|
FilterResults results = new FilterResults();
|
||||||
String query = charSequence.toString().toLowerCase();
|
String query = charSequence.toString().toLowerCase();
|
||||||
|
|
||||||
if (query == null || query.length() == 0) {
|
if (query.length() == 0) {
|
||||||
results.values = mangas;
|
results.values = mangas;
|
||||||
results.count = mangas.size();
|
results.count = mangas.size();
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -9,18 +9,12 @@ import android.view.View;
|
||||||
import android.view.ViewGroup;
|
import android.view.ViewGroup;
|
||||||
import android.widget.GridView;
|
import android.widget.GridView;
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import butterknife.Bind;
|
import butterknife.Bind;
|
||||||
import butterknife.ButterKnife;
|
import butterknife.ButterKnife;
|
||||||
import eu.kanade.mangafeed.R;
|
import eu.kanade.mangafeed.R;
|
||||||
import eu.kanade.mangafeed.data.models.Manga;
|
|
||||||
import eu.kanade.mangafeed.presenter.LibraryPresenter;
|
import eu.kanade.mangafeed.presenter.LibraryPresenter;
|
||||||
import eu.kanade.mangafeed.ui.activity.MainActivity;
|
import eu.kanade.mangafeed.ui.activity.MainActivity;
|
||||||
import eu.kanade.mangafeed.ui.adapter.CatalogueArrayAdapter;
|
|
||||||
import eu.kanade.mangafeed.ui.adapter.MangaLibraryHolder;
|
|
||||||
import eu.kanade.mangafeed.view.LibraryView;
|
import eu.kanade.mangafeed.view.LibraryView;
|
||||||
import timber.log.Timber;
|
|
||||||
import uk.co.ribot.easyadapter.EasyAdapter;
|
import uk.co.ribot.easyadapter.EasyAdapter;
|
||||||
|
|
||||||
|
|
||||||
|
@ -28,7 +22,6 @@ public class LibraryFragment extends BaseFragment implements LibraryView {
|
||||||
|
|
||||||
@Bind(R.id.gridView) GridView grid;
|
@Bind(R.id.gridView) GridView grid;
|
||||||
LibraryPresenter presenter;
|
LibraryPresenter presenter;
|
||||||
CatalogueArrayAdapter<Manga> adapter;
|
|
||||||
MainActivity activity;
|
MainActivity activity;
|
||||||
|
|
||||||
public static LibraryFragment newInstance() {
|
public static LibraryFragment newInstance() {
|
||||||
|
@ -62,7 +55,6 @@ public class LibraryFragment extends BaseFragment implements LibraryView {
|
||||||
public void onActivityCreated(Bundle savedInstanceState) {
|
public void onActivityCreated(Bundle savedInstanceState) {
|
||||||
super.onActivityCreated(savedInstanceState);
|
super.onActivityCreated(savedInstanceState);
|
||||||
|
|
||||||
setupToolbar();
|
|
||||||
setMangaClickListener();
|
setMangaClickListener();
|
||||||
presenter.initializeMangas();
|
presenter.initializeMangas();
|
||||||
}
|
}
|
||||||
|
@ -89,35 +81,17 @@ public class LibraryFragment extends BaseFragment implements LibraryView {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
// LibraryView
|
|
||||||
|
|
||||||
public void setMangas(List<Manga> mangas) {
|
|
||||||
if (adapter == null) {
|
|
||||||
adapter = new CatalogueArrayAdapter<>(
|
|
||||||
getActivity(),
|
|
||||||
MangaLibraryHolder.class,
|
|
||||||
mangas
|
|
||||||
);
|
|
||||||
grid.setAdapter(adapter);
|
|
||||||
} else {
|
|
||||||
adapter.setItems(mangas);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setMangaClickListener() {
|
private void setMangaClickListener() {
|
||||||
grid.setOnItemClickListener(
|
grid.setOnItemClickListener(
|
||||||
(parent, view, position, id) ->
|
(parent, view, position, id) ->
|
||||||
presenter.onMangaClick(adapter, position)
|
presenter.onMangaClick(position)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupToolbar() {
|
// LibraryView
|
||||||
//activity.getSupportActionBar().
|
|
||||||
}
|
|
||||||
|
|
||||||
public CatalogueArrayAdapter getAdapter() {
|
public void setAdapter(EasyAdapter adapter) {
|
||||||
return adapter;
|
grid.setAdapter(adapter);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,13 +1,8 @@
|
||||||
package eu.kanade.mangafeed.view;
|
package eu.kanade.mangafeed.view;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import uk.co.ribot.easyadapter.EasyAdapter;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import eu.kanade.mangafeed.data.models.Manga;
|
|
||||||
import eu.kanade.mangafeed.ui.adapter.CatalogueArrayAdapter;
|
|
||||||
|
|
||||||
public interface LibraryView extends BaseView {
|
public interface LibraryView extends BaseView {
|
||||||
|
|
||||||
void setMangas(List<Manga> mangas);
|
void setAdapter(EasyAdapter mangas);
|
||||||
CatalogueArrayAdapter getAdapter();
|
|
||||||
}
|
}
|
||||||
|
|
Reference in a new issue