More changes to MangaDetailActivity and its fragments
This commit is contained in:
		
							parent
							
								
									c13d747665
								
							
						
					
					
						commit
						1802dd04e4
					
				| @ -57,6 +57,11 @@ public class DatabaseHelper implements MangaManager, ChapterManager { | ||||
|         return mChapterManager.getChapters(manga); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Observable<List<Chapter>> getChapters(long manga_id) { | ||||
|         return mChapterManager.getChapters(manga_id); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Observable<PutResult> insertChapter(Chapter chapter) { | ||||
|         return mChapterManager.insertChapter(chapter); | ||||
|  | ||||
| @ -15,6 +15,8 @@ public interface ChapterManager { | ||||
| 
 | ||||
|     Observable<List<Chapter>> getChapters(Manga manga); | ||||
| 
 | ||||
|     Observable<List<Chapter>> getChapters(long manga_id); | ||||
| 
 | ||||
|     Observable<PutResult> insertChapter(Chapter chapter); | ||||
| 
 | ||||
|     Observable<PutResults<Chapter>> insertChapters(List<Chapter> chapters); | ||||
|  | ||||
| @ -38,6 +38,19 @@ public class ChapterManagerImpl extends BaseManager implements ChapterManager { | ||||
|         return prepareGetChapters(manga).createObservable(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Observable<List<Chapter>> getChapters(long manga_id) { | ||||
|         return db.get() | ||||
|                 .listOfObjects(Chapter.class) | ||||
|                 .withQuery(Query.builder() | ||||
|                         .table(ChaptersTable.TABLE) | ||||
|                         .where(ChaptersTable.COLUMN_MANGA_ID + "=?") | ||||
|                         .whereArgs(manga_id) | ||||
|                         .build()) | ||||
|                 .prepare() | ||||
|                 .createObservable(); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public Observable<PutResult> insertChapter(Chapter chapter) { | ||||
|         return db.put() | ||||
|  | ||||
| @ -1,6 +1,67 @@ | ||||
| package eu.kanade.mangafeed.presenter; | ||||
| 
 | ||||
| import javax.inject.Inject; | ||||
| 
 | ||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||
| import eu.kanade.mangafeed.data.helpers.SourceManager; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.sources.Source; | ||||
| import eu.kanade.mangafeed.ui.fragment.MangaChaptersFragment; | ||||
| import rx.Subscription; | ||||
| import rx.android.schedulers.AndroidSchedulers; | ||||
| import rx.schedulers.Schedulers; | ||||
| 
 | ||||
| public class MangaChaptersPresenter extends BasePresenter<MangaChaptersFragment> { | ||||
| 
 | ||||
|     @Inject DatabaseHelper db; | ||||
|     @Inject SourceManager sourceManager; | ||||
| 
 | ||||
|     private Subscription chaptersSubscription; | ||||
|     private Subscription onlineChaptersSubscription; | ||||
|     private boolean doingRequest = false; | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onTakeView(MangaChaptersFragment view) { | ||||
|         super.onTakeView(view); | ||||
| 
 | ||||
|         getChapters(view.getMangaId()); | ||||
|     } | ||||
| 
 | ||||
|     public void refreshChapters(Manga manga) { | ||||
|         if (manga != null && !doingRequest) | ||||
|             getChaptersFromSource(manga); | ||||
|     } | ||||
| 
 | ||||
|     private void getChapters(long manga_id) { | ||||
|         if (chaptersSubscription != null) | ||||
|             remove(chaptersSubscription); | ||||
| 
 | ||||
|         chaptersSubscription = db.getChapters(manga_id) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .compose(deliverLatestCache()) | ||||
|                 .subscribe(this.split(MangaChaptersFragment::onNextChapters)); | ||||
| 
 | ||||
|         add(chaptersSubscription); | ||||
|     } | ||||
| 
 | ||||
|     public void getChaptersFromSource(Manga manga) { | ||||
|         if (onlineChaptersSubscription != null) | ||||
|             remove(onlineChaptersSubscription); | ||||
| 
 | ||||
|         Source source = sourceManager.get(manga.source); | ||||
|         doingRequest = true; | ||||
| 
 | ||||
|         onlineChaptersSubscription = source.pullChaptersFromNetwork(manga.url) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .compose(deliverLatestCache()) | ||||
|                 .subscribe(this.split((view, chapters) -> { | ||||
|                     doingRequest = false; | ||||
|                 }), throwable -> { | ||||
|                     doingRequest = false; | ||||
|                 }); | ||||
| 
 | ||||
|         add(onlineChaptersSubscription); | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,7 +1,37 @@ | ||||
| package eu.kanade.mangafeed.presenter; | ||||
| 
 | ||||
| import javax.inject.Inject; | ||||
| 
 | ||||
| import eu.kanade.mangafeed.data.helpers.DatabaseHelper; | ||||
| import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||
| import rx.Observable; | ||||
| import rx.Subscription; | ||||
| import rx.android.schedulers.AndroidSchedulers; | ||||
| import rx.schedulers.Schedulers; | ||||
| 
 | ||||
| public class MangaDetailPresenter extends BasePresenter<MangaDetailActivity> { | ||||
| 
 | ||||
|     @Inject DatabaseHelper db; | ||||
| 
 | ||||
|     private Subscription mangaSubscription; | ||||
| 
 | ||||
|     @Override | ||||
|     protected void onTakeView(MangaDetailActivity view) { | ||||
|         super.onTakeView(view); | ||||
| 
 | ||||
|         if (mangaSubscription == null) | ||||
|             initializeManga(view); | ||||
|     } | ||||
| 
 | ||||
|     private void initializeManga(MangaDetailActivity view) { | ||||
|         mangaSubscription = db.getManga(view.getMangaId()) | ||||
|                 .subscribeOn(Schedulers.io()) | ||||
|                 .take(1) | ||||
|                 .flatMap(Observable::from) | ||||
|                 .observeOn(AndroidSchedulers.mainThread()) | ||||
|                 .subscribe(view::onMangaNext); | ||||
| 
 | ||||
|         add(mangaSubscription); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -32,6 +32,7 @@ public class MangaDetailActivity extends BaseActivity<MangaDetailPresenter> { | ||||
|     @Bind(R.id.viewpager) | ||||
|     ViewPager view_pager; | ||||
| 
 | ||||
|     private MangaDetailAdapter adapter; | ||||
|     private long manga_id; | ||||
|     private boolean is_online = false; | ||||
| 
 | ||||
| @ -73,17 +74,25 @@ public class MangaDetailActivity extends BaseActivity<MangaDetailPresenter> { | ||||
|     } | ||||
| 
 | ||||
|     private void setupViewPager() { | ||||
|         view_pager.setAdapter(new MangaDetailAdapter( | ||||
|         adapter = new MangaDetailAdapter( | ||||
|                 getSupportFragmentManager(), | ||||
|                 getActivity(), | ||||
|                 manga_id)); | ||||
|                 manga_id); | ||||
| 
 | ||||
|         view_pager.setAdapter(adapter); | ||||
|         tabs.setupWithViewPager(view_pager); | ||||
| 
 | ||||
|         if (!is_online) | ||||
|             view_pager.setCurrentItem(MangaDetailAdapter.CHAPTERS_FRAGMENT); | ||||
|     } | ||||
| 
 | ||||
|     public long getMangaId() { | ||||
|         return manga_id; | ||||
|     } | ||||
| 
 | ||||
|     public void onMangaNext(Manga manga) { | ||||
|         ((MangaChaptersFragment) adapter.getItem(MangaDetailAdapter.CHAPTERS_FRAGMENT)) | ||||
|                 .onMangaNext(manga); | ||||
|     } | ||||
| 
 | ||||
|     class MangaDetailAdapter extends FragmentPagerAdapter { | ||||
| @ -119,7 +128,8 @@ class MangaDetailAdapter extends FragmentPagerAdapter { | ||||
|                 case CHAPTERS_FRAGMENT: | ||||
|                     return MangaChaptersFragment.newInstance(manga_id); | ||||
| 
 | ||||
|             default: return null; | ||||
|                 default: | ||||
|                     return null; | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @ -129,3 +139,5 @@ class MangaDetailAdapter extends FragmentPagerAdapter { | ||||
|             return tab_titles[position]; | ||||
|         } | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -14,6 +14,7 @@ import android.widget.GridView; | ||||
| 
 | ||||
| import butterknife.Bind; | ||||
| import butterknife.ButterKnife; | ||||
| import butterknife.OnItemClick; | ||||
| import eu.kanade.mangafeed.R; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.presenter.LibraryPresenter; | ||||
| @ -53,7 +54,7 @@ public class LibraryFragment extends BaseFragment<LibraryPresenter> { | ||||
|         ButterKnife.bind(this, view); | ||||
| 
 | ||||
|         createAdapter(); | ||||
|         setMangaClickListener(); | ||||
|         setMangaLongClickListener(); | ||||
| 
 | ||||
|         return view; | ||||
|     } | ||||
| @ -80,7 +81,7 @@ public class LibraryFragment extends BaseFragment<LibraryPresenter> { | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     public void createAdapter() { | ||||
|     private void createAdapter() { | ||||
|         adapter = new LibraryAdapter<>(getActivity()); | ||||
|         grid.setAdapter(adapter); | ||||
|     } | ||||
| @ -89,11 +90,16 @@ public class LibraryFragment extends BaseFragment<LibraryPresenter> { | ||||
|         return adapter; | ||||
|     } | ||||
| 
 | ||||
|     public void setMangaClickListener() { | ||||
|         grid.setOnItemClickListener( | ||||
|                 (parent, view, position, id) -> | ||||
|                         onMangaClick(position) | ||||
|     @OnItemClick(R.id.gridView) | ||||
|     protected void onMangaClick(int position) { | ||||
|         Intent intent = MangaDetailActivity.newIntent( | ||||
|                 getActivity(), | ||||
|                 adapter.getItem(position) | ||||
|         ); | ||||
|         getActivity().startActivity(intent); | ||||
|     } | ||||
| 
 | ||||
|     private void setMangaLongClickListener() { | ||||
|         grid.setMultiChoiceModeListener(new GridView.MultiChoiceModeListener() { | ||||
|             @Override | ||||
|             public void onItemCheckedStateChanged(ActionMode mode, int position, long id, boolean checked) { | ||||
| @ -131,12 +137,4 @@ public class LibraryFragment extends BaseFragment<LibraryPresenter> { | ||||
|         }); | ||||
|     } | ||||
| 
 | ||||
|     private void onMangaClick(int position) { | ||||
|         Intent intent = MangaDetailActivity.newIntent( | ||||
|                 getActivity(), | ||||
|                 adapter.getItem(position) | ||||
|         ); | ||||
|         getActivity().startActivity(intent); | ||||
|     } | ||||
| 
 | ||||
| } | ||||
|  | ||||
| @ -2,20 +2,37 @@ package eu.kanade.mangafeed.ui.fragment; | ||||
| 
 | ||||
| import android.os.Bundle; | ||||
| import android.support.v4.app.Fragment; | ||||
| import android.support.v7.widget.LinearLayoutManager; | ||||
| import android.support.v7.widget.RecyclerView; | ||||
| import android.view.LayoutInflater; | ||||
| import android.view.Menu; | ||||
| import android.view.MenuInflater; | ||||
| import android.view.MenuItem; | ||||
| import android.view.View; | ||||
| import android.view.ViewGroup; | ||||
| 
 | ||||
| import java.util.List; | ||||
| 
 | ||||
| import butterknife.Bind; | ||||
| import butterknife.ButterKnife; | ||||
| import eu.kanade.mangafeed.R; | ||||
| import eu.kanade.mangafeed.data.models.Chapter; | ||||
| import eu.kanade.mangafeed.data.models.Manga; | ||||
| import eu.kanade.mangafeed.presenter.MangaChaptersPresenter; | ||||
| import eu.kanade.mangafeed.ui.activity.MangaDetailActivity; | ||||
| import eu.kanade.mangafeed.ui.adapter.ChapterListHolder; | ||||
| import nucleus.factory.RequiresPresenter; | ||||
| import timber.log.Timber; | ||||
| import uk.co.ribot.easyadapter.EasyRecyclerAdapter; | ||||
| 
 | ||||
| @RequiresPresenter(MangaChaptersPresenter.class) | ||||
| public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> { | ||||
| 
 | ||||
|     @Bind(R.id.chapter_list) RecyclerView chapters; | ||||
| 
 | ||||
|     private long manga_id; | ||||
|     private Manga manga; | ||||
|     private EasyRecyclerAdapter<Chapter> adapter; | ||||
| 
 | ||||
|     public static Fragment newInstance(long manga_id) { | ||||
|         MangaChaptersFragment fragment = new MangaChaptersFragment(); | ||||
| @ -28,6 +45,8 @@ public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> | ||||
|     @Override | ||||
|     public void onCreate(Bundle savedState) { | ||||
|         super.onCreate(savedState); | ||||
|         setHasOptionsMenu(true); | ||||
| 
 | ||||
|         manga_id = getArguments().getLong(MangaDetailActivity.MANGA_ID); | ||||
|     } | ||||
| 
 | ||||
| @ -38,6 +57,46 @@ public class MangaChaptersFragment extends BaseFragment<MangaChaptersPresenter> | ||||
|         View view = inflater.inflate(R.layout.fragment_manga_chapters, container, false); | ||||
|         ButterKnife.bind(this, view); | ||||
| 
 | ||||
|         chapters.setLayoutManager(new LinearLayoutManager(getActivity())); | ||||
|         createAdapter(); | ||||
| 
 | ||||
|         return view; | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { | ||||
|         inflater.inflate(R.menu.chapters, menu); | ||||
|         super.onCreateOptionsMenu(menu, inflater); | ||||
|     } | ||||
| 
 | ||||
|     @Override | ||||
|     public boolean onOptionsItemSelected(MenuItem item) { | ||||
|         switch (item.getItemId()) { | ||||
|             case R.id.action_refresh: | ||||
|                 getPresenter().refreshChapters(manga); | ||||
|                 break; | ||||
|         } | ||||
|         return super.onOptionsItemSelected(item); | ||||
|     } | ||||
| 
 | ||||
|     private void createAdapter() { | ||||
|         adapter = new EasyRecyclerAdapter<>(getActivity(), ChapterListHolder.class); | ||||
|         chapters.setAdapter(adapter); | ||||
|     } | ||||
| 
 | ||||
|     public long getMangaId() { | ||||
|         return manga_id; | ||||
|     } | ||||
| 
 | ||||
|     public Manga getManga() { | ||||
|         return manga; | ||||
|     } | ||||
| 
 | ||||
|     public void onNextChapters(List<Chapter> chapters) { | ||||
|         adapter.setItems(chapters); | ||||
|     } | ||||
| 
 | ||||
|     public void onMangaNext(Manga manga) { | ||||
|         this.manga = manga; | ||||
|     } | ||||
| } | ||||
|  | ||||
| @ -1,201 +0,0 @@ | ||||
| <?xml version="1.0" encoding="utf-8"?> | ||||
| <LinearLayout | ||||
|     xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:tools="http://schemas.android.com/tools" | ||||
|     android:orientation="vertical" | ||||
|     android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent" android:fitsSystemWindows="true" | ||||
|     tools:context="eu.kanade.mangafeed.ui.activity.CatalogueActivity"> | ||||
| 
 | ||||
|     <include | ||||
|         android:id="@+id/toolbar" | ||||
|         layout="@layout/toolbar"/> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:padding="10dp"> | ||||
| 
 | ||||
|         <RelativeLayout | ||||
|             android:layout_width="wrap_content" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:background="@drawable/bkg_shadow_img" | ||||
|             android:focusable="false" | ||||
|             android:focusableInTouchMode="false" | ||||
|             android:gravity="center" | ||||
|             android:padding="4dp"> | ||||
| 
 | ||||
|             <ImageView | ||||
|                 android:id="@+id/manga_cover" | ||||
|                 android:layout_width="138dp" | ||||
|                 android:layout_height="190dp" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:scaleType="fitXY" | ||||
|                 android:visibility="visible" /> | ||||
| 
 | ||||
|         </RelativeLayout> | ||||
| 
 | ||||
|         <RelativeLayout | ||||
|             android:id="@+id/grid_item_description" | ||||
|             android:layout_width="fill_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:focusable="false" | ||||
|             android:focusableInTouchMode="false" | ||||
|             android:paddingLeft="15.0dip"> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_author_label" | ||||
|                 style="@style/manga_detail_label" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignParentLeft="true" | ||||
|                 android:layout_alignRight="@+id/manga_genres_label" | ||||
|                 android:layout_marginTop="5dp" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:text="@string/author" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_author" | ||||
|                 style="@style/manga_detail_text" | ||||
|                 android:layout_width="fill_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignBaseline="@id/manga_author_label" | ||||
|                 android:layout_toRightOf="@id/manga_author_label" | ||||
|                 android:ellipsize="end" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:maxLines="1" | ||||
|                 android:singleLine="true" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_artist_label" | ||||
|                 style="@style/manga_detail_label" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignParentLeft="true" | ||||
|                 android:layout_alignRight="@id/manga_genres_label" | ||||
|                 android:layout_below="@id/manga_author_label" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:text="@string/artist" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_artist" | ||||
|                 style="@style/manga_detail_text" | ||||
|                 android:layout_width="fill_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignBaseline="@id/manga_artist_label" | ||||
|                 android:layout_toRightOf="@id/manga_artist_label" | ||||
|                 android:ellipsize="end" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:maxLines="1" | ||||
|                 android:singleLine="true" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_chapters_label" | ||||
|                 style="@style/manga_detail_label" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignParentLeft="true" | ||||
|                 android:layout_alignRight="@id/manga_genres_label" | ||||
|                 android:layout_below="@id/manga_artist_label" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:text="@string/chapters" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_chapters" | ||||
|                 style="@style/manga_detail_text" | ||||
|                 android:layout_width="fill_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignBaseline="@id/manga_chapters_label" | ||||
|                 android:layout_toRightOf="@id/manga_chapters_label" | ||||
|                 android:ellipsize="end" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:maxLines="1" | ||||
|                 android:singleLine="true" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_status_label" | ||||
|                 style="@style/manga_detail_label" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignParentLeft="true" | ||||
|                 android:layout_alignRight="@id/manga_genres_label" | ||||
|                 android:layout_below="@id/manga_chapters_label" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:text="@string/status" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_status" | ||||
|                 style="@style/manga_detail_text" | ||||
|                 android:layout_width="fill_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignBaseline="@id/manga_status_label" | ||||
|                 android:layout_toRightOf="@id/manga_chapters_label" | ||||
|                 android:ellipsize="end" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:maxLines="1" | ||||
|                 android:singleLine="true" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_genres_label" | ||||
|                 style="@style/manga_detail_label" | ||||
|                 android:layout_width="wrap_content" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_alignParentLeft="true" | ||||
|                 android:layout_below="@id/manga_status_label" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                 android:text="@string/genres" /> | ||||
| 
 | ||||
|             <TextView | ||||
|                 android:id="@+id/manga_genres" | ||||
|                 style="@style/manga_detail_text" | ||||
|                 android:layout_width="fill_parent" | ||||
|                 android:layout_height="wrap_content" | ||||
|                 android:layout_below="@id/manga_genres_label" | ||||
|                 android:singleLine="false" | ||||
|                 android:focusable="false" | ||||
|                 android:focusableInTouchMode="false" | ||||
|                  /> | ||||
| 
 | ||||
| 
 | ||||
|         </RelativeLayout> | ||||
| 
 | ||||
|     </LinearLayout> | ||||
| 
 | ||||
|     <LinearLayout | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="match_parent" | ||||
|         android:padding="10dp" | ||||
|         android:orientation="vertical"> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:id="@+id/manga_summary_label" | ||||
|             style="@style/manga_detail_label" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="wrap_content" | ||||
|             android:focusable="false" | ||||
|             android:focusableInTouchMode="false" | ||||
|             android:singleLine="false" | ||||
|             android:text="@string/description" /> | ||||
| 
 | ||||
|         <TextView | ||||
|             android:id="@+id/manga_summary" | ||||
|             style="@style/manga_detail_text" | ||||
|             android:layout_width="match_parent" | ||||
|             android:layout_height="match_parent" | ||||
|             android:focusable="false" | ||||
|             android:focusableInTouchMode="false" | ||||
|             android:singleLine="false" /> | ||||
| 
 | ||||
|     </LinearLayout> | ||||
| 
 | ||||
| </LinearLayout> | ||||
| @ -3,4 +3,11 @@ | ||||
|     android:orientation="vertical" android:layout_width="match_parent" | ||||
|     android:layout_height="match_parent"> | ||||
| 
 | ||||
|     <android.support.v7.widget.RecyclerView | ||||
|         android:layout_width="match_parent" | ||||
|         android:layout_height="wrap_content" | ||||
|         android:id="@+id/chapter_list"> | ||||
| 
 | ||||
|     </android.support.v7.widget.RecyclerView> | ||||
| 
 | ||||
| </LinearLayout> | ||||
							
								
								
									
										10
									
								
								app/src/main/res/menu/chapters.xml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								app/src/main/res/menu/chapters.xml
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,10 @@ | ||||
| <menu xmlns:android="http://schemas.android.com/apk/res/android" | ||||
|     xmlns:app="http://schemas.android.com/apk/res-auto" | ||||
|     xmlns:tools="http://schemas.android.com/tools" tools:context=".MangaDetailActivity"> | ||||
|     <item | ||||
|         android:id="@+id/action_refresh" | ||||
|         android:title="@string/action_refresh" | ||||
|         android:icon="@drawable/ic_action_refresh" | ||||
|         android:orderInCategory="1" | ||||
|         app:showAsAction="ifRoom" /> | ||||
| </menu> | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 inorichi
						inorichi