1 package com.moiseum.wolnelektury.view.news;
3 import android.os.Bundle;
4 import android.support.v7.widget.LinearLayoutManager;
5 import android.view.View;
6 import android.widget.Button;
7 import android.widget.ProgressBar;
8 import android.widget.Toast;
10 import com.moiseum.wolnelektury.R;
11 import com.moiseum.wolnelektury.base.mvp.PresenterFragment;
12 import com.moiseum.wolnelektury.components.ProgressRecyclerView;
13 import com.moiseum.wolnelektury.components.recycler.EndlessRecyclerOnScrollListener;
14 import com.moiseum.wolnelektury.connection.models.NewsModel;
15 import com.moiseum.wolnelektury.view.news.single.NewsActivity;
17 import java.util.List;
19 import butterknife.BindView;
20 import butterknife.OnClick;
22 public class NewsListFragment extends PresenterFragment<NewsListPresenter> implements NewsListView {
24 public static NewsListFragment newInstance() {
25 return new NewsListFragment();
28 @BindView(R.id.rvNews)
29 ProgressRecyclerView<NewsModel> rvNews;
30 @BindView(R.id.pbLoadMore)
31 ProgressBar pbLoadMore;
32 @BindView(R.id.btnReloadMore)
35 private NewsListAdapter adapter;
36 private EndlessRecyclerOnScrollListener rvBooksScrollListener = new EndlessRecyclerOnScrollListener() {
38 public void onLoadMore() {
39 if (adapter.getItemCount() > 0) {
40 getPresenter().loadMoreNews();
46 protected NewsListPresenter createPresenter() {
47 return new NewsListPresenter(this);
51 public int getLayoutResourceId() {
52 return R.layout.fragment_news;
56 public void prepareView(View view, Bundle savedInstanceState) {
57 LinearLayoutManager layoutManager = new LinearLayoutManager(getContext());
58 rvNews.setLayoutManager(layoutManager);
59 rvNews.addOnScrollListener(rvBooksScrollListener);
61 adapter = new NewsListAdapter(getContext());
62 adapter.setOnItemClickListener((item, view1, position) -> getPresenter().onNewsClicked(item));
63 rvNews.setAdapter(adapter);
67 public void setData(List<NewsModel> data) {
68 if (adapter.getItemCount() == 0) {
69 rvNews.setItems(data);
71 rvNews.addItems(data);
76 public void setProgressVisible(boolean visible) {
77 if (adapter.getItemCount() == 0) {
78 rvNews.setProgressVisible(visible);
80 pbLoadMore.setVisibility(visible ? View.VISIBLE : View.GONE);
85 public void showError(Exception e) {
86 Toast.makeText(getContext(), R.string.loading_results_failed, Toast.LENGTH_SHORT).show();
87 if (adapter.getItemCount() != 0) {
88 btnReloadMore.setVisibility(View.VISIBLE);
90 rvNews.showRetryButton(() -> getPresenter().loadMoreNews());
95 public void launchNews(NewsModel news) {
96 startActivity(new NewsActivity.NewsIntent(news, getContext()));
99 @OnClick(R.id.btnReloadMore)
100 public void onReloadMoreClicked() {
101 btnReloadMore.setVisibility(View.GONE);
102 pbLoadMore.setVisibility(View.VISIBLE);
103 getPresenter().loadMoreNews();