فهرست منبع

Removed copy-pasted object creation

Vadik Sirekanyan 7 سال پیش
والد
کامیت
80b44cdf89

+ 2 - 2
app/src/main/java/com/sirekanyan/knigopis/common/view/header/HeaderItemDecoration.java

@@ -12,9 +12,9 @@ import android.view.ViewGroup;
  */
 public class HeaderItemDecoration extends RecyclerView.ItemDecoration {
 
-    private final StickyHeaderInterface mListener;
+    private final StickyHeader mListener;
 
-    public HeaderItemDecoration(@NonNull StickyHeaderInterface listener) {
+    public HeaderItemDecoration(@NonNull StickyHeader listener) {
         mListener = listener;
     }
 

+ 1 - 1
app/src/main/java/com/sirekanyan/knigopis/common/view/header/StickyHeaderInterface.java → app/src/main/java/com/sirekanyan/knigopis/common/view/header/StickyHeader.java

@@ -2,7 +2,7 @@ package com.sirekanyan.knigopis.common.view.header;
 
 import android.view.View;
 
-public interface StickyHeaderInterface {
+public interface StickyHeader {
 
     /**
      * This method gets called by {@link HeaderItemDecoration} to fetch the position of the header item in the adapter

+ 37 - 0
app/src/main/java/com/sirekanyan/knigopis/common/view/header/StickyHeaderImpl.kt

@@ -0,0 +1,37 @@
+package com.sirekanyan.knigopis.common.view.header
+
+import android.app.Application
+import android.view.View
+import com.sirekanyan.knigopis.R
+import com.sirekanyan.knigopis.common.extensions.showNow
+import com.sirekanyan.knigopis.common.orDefault
+import com.sirekanyan.knigopis.model.BookModel
+import kotlinx.android.synthetic.main.header.view.*
+
+class StickyHeaderImpl(
+    private val app: Application,
+    private val books: List<BookModel>
+) : StickyHeader {
+
+    override fun getHeaderPositionForItem(itemPosition: Int) = itemPosition
+
+    override fun getHeaderLayout(headerPosition: Int) = R.layout.header
+
+    override fun isHeader(itemPosition: Int) = books[itemPosition].isHeader
+
+    override fun bindHeaderData(header: View, headerPosition: Int) {
+        val group = books[headerPosition].group
+        header.headerTitle.text =
+                group.title.orDefault(app.getString(R.string.books_header_done_other))
+        header.headerCount.also { headerCount ->
+            headerCount.text = app.resources.getQuantityString(
+                R.plurals.common_header_books,
+                group.count,
+                group.count
+            )
+            headerCount.showNow()
+        }
+        header.headerBottomDivider.showNow()
+    }
+
+}

+ 2 - 38
app/src/main/java/com/sirekanyan/knigopis/feature/MainActivity.kt

@@ -19,14 +19,13 @@ import com.sirekanyan.knigopis.R
 import com.sirekanyan.knigopis.Router
 import com.sirekanyan.knigopis.common.*
 import com.sirekanyan.knigopis.common.extensions.getFullTitleString
-import com.sirekanyan.knigopis.common.extensions.showNow
 import com.sirekanyan.knigopis.common.extensions.startActivityOrNull
 import com.sirekanyan.knigopis.common.extensions.toast
 import com.sirekanyan.knigopis.common.view.dialog.DialogFactory
 import com.sirekanyan.knigopis.common.view.dialog.DialogItem
 import com.sirekanyan.knigopis.common.view.dialog.createDialogItem
 import com.sirekanyan.knigopis.common.view.header.HeaderItemDecoration
-import com.sirekanyan.knigopis.common.view.header.StickyHeaderInterface
+import com.sirekanyan.knigopis.common.view.header.StickyHeaderImpl
 import com.sirekanyan.knigopis.feature.book.createEditBookIntent
 import com.sirekanyan.knigopis.feature.book.createNewBookIntent
 import com.sirekanyan.knigopis.feature.books.BooksAdapter
@@ -81,43 +80,8 @@ class MainActivity : AppCompatActivity(), Router {
         setContentView(R.layout.activity_main)
         initRecyclerView(booksRecyclerView)
         booksRecyclerView.addItemDecoration(
-            HeaderItemDecoration(
-                object : StickyHeaderInterface {
-                    override fun getHeaderPositionForItem(itemPosition: Int): Int {
-                        return itemPosition
-                    }
-
-                    override fun getHeaderLayout(headerPosition: Int): Int {
-                        return R.layout.header
-                    }
-
-                    override fun bindHeaderData(header: View, headerPosition: Int) {
-                        val group = allBooks[headerPosition].group
-                        val title = group.title.let {
-                            if (it.isEmpty()) {
-                                getString(R.string.books_header_done_other)
-                            } else {
-                                it
-                            }
-                        }
-                        header.findViewById<TextView>(R.id.headerTitle).text = title
-                        header.findViewById<TextView>(R.id.headerCount).text =
-                                resources.getQuantityString(
-                                    R.plurals.common_header_books,
-                                    group.count,
-                                    group.count
-                                )
-                        header.findViewById<TextView>(R.id.headerCount).showNow()
-                        header.findViewById<View>(R.id.header_bottom_divider).showNow()
-                    }
-
-                    override fun isHeader(itemPosition: Int): Boolean {
-                        return allBooks[itemPosition].isHeader
-                    }
-                }
-            )
+            HeaderItemDecoration(StickyHeaderImpl(application, allBooks))
         )
-
         initRecyclerView(usersRecyclerView)
         initRecyclerView(notesRecyclerView)
         val currentTabId = savedInstanceState?.getInt(CURRENT_TAB_KEY)

+ 2 - 38
app/src/main/java/com/sirekanyan/knigopis/feature/user/UserActivity.kt

@@ -8,15 +8,13 @@ import android.support.v7.app.AppCompatActivity
 import android.support.v7.widget.LinearLayoutManager
 import android.view.Menu
 import android.view.MenuItem
-import android.view.View
-import android.widget.TextView
 import com.sirekanyan.knigopis.R
 import com.sirekanyan.knigopis.common.*
 import com.sirekanyan.knigopis.common.extensions.*
 import com.sirekanyan.knigopis.common.view.dialog.DialogFactory
 import com.sirekanyan.knigopis.common.view.dialog.createDialogItem
 import com.sirekanyan.knigopis.common.view.header.HeaderItemDecoration
-import com.sirekanyan.knigopis.common.view.header.StickyHeaderInterface
+import com.sirekanyan.knigopis.common.view.header.StickyHeaderImpl
 import com.sirekanyan.knigopis.feature.book.createNewBookIntent
 import com.sirekanyan.knigopis.model.BookDataModel
 import com.sirekanyan.knigopis.model.BookModel
@@ -73,41 +71,7 @@ class UserActivity : AppCompatActivity() {
         val layoutManager = LinearLayoutManager(this)
         userBooksRecyclerView.layoutManager = layoutManager
         userBooksRecyclerView.addItemDecoration(
-            HeaderItemDecoration(
-                object : StickyHeaderInterface {
-                    override fun getHeaderPositionForItem(itemPosition: Int): Int {
-                        return itemPosition
-                    }
-
-                    override fun getHeaderLayout(headerPosition: Int): Int {
-                        return R.layout.header
-                    }
-
-                    override fun bindHeaderData(header: View, headerPosition: Int) {
-                        val group = books[headerPosition].group
-                        val title = group.title.let {
-                            if (it.isEmpty()) {
-                                getString(R.string.books_header_done_other)
-                            } else {
-                                it
-                            }
-                        }
-                        header.findViewById<TextView>(R.id.headerTitle).text = title
-                        header.findViewById<TextView>(R.id.headerCount).text =
-                                resources.getQuantityString(
-                                    R.plurals.common_header_books,
-                                    group.count,
-                                    group.count
-                                )
-                        header.findViewById<TextView>(R.id.headerCount).showNow()
-                        header.findViewById<View>(R.id.header_bottom_divider).showNow()
-                    }
-
-                    override fun isHeader(itemPosition: Int): Boolean {
-                        return books[itemPosition].isHeader
-                    }
-                }
-            )
+            HeaderItemDecoration(StickyHeaderImpl(application, books))
         )
         userBooksRecyclerView.adapter = booksAdapter
     }

+ 1 - 1
app/src/main/res/layout/header.xml

@@ -39,7 +39,7 @@
         tools:visibility="visible" />
 
     <View
-        android:id="@+id/header_bottom_divider"
+        android:id="@+id/headerBottomDivider"
         android:layout_width="match_parent"
         android:layout_height="0.5dp"
         android:layout_gravity="bottom"