From d86c772443ce535b400a137795f5752e19763b19 Mon Sep 17 00:00:00 2001 From: "Teeranai.P" Date: Sun, 22 Mar 2020 22:43:42 +0700 Subject: [PATCH 1/6] Add screen shot --- screenshot/ss_1.png | Bin 0 -> 29036 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 screenshot/ss_1.png diff --git a/screenshot/ss_1.png b/screenshot/ss_1.png new file mode 100644 index 0000000000000000000000000000000000000000..9a910576475e70224eeb037c6fc63c011a0c2c08 GIT binary patch literal 29036 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�R>3;galP63f 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 T`R;)H?UJikv{gzjn+N|NpA3QR literal 0 HcmV?d00001 From b6d3115a7c7522dc959b3fdde494c43ea8747fbf Mon Sep 17 00:00:00 2001 From: "Teeranai.P" Date: Sun, 22 Mar 2020 22:46:46 +0700 Subject: [PATCH 2/6] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 73f8692..d999fbd 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,6 @@ # Sheet Selection -[![](https://jitpack.io/v/minibugdev/sheetselection.svg)](https://jitpack.io/#minibugdev/SheetSelection) +[![Jitpack SheetSelection](https://jitpack.io/v/minibugdev/sheetselection.svg)](https://jitpack.io/#minibugdev/SheetSelection) +[![Android Arsenal](https://img.shields.io/badge/Android%20Arsenal-SheetSelection-orange.svg?style=flat)](https://android-arsenal.com/details/1/8051) [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://raw.githubusercontent.com/minibugdev/DrawableBadge/master/LICENSE) `SheetSelection` is an Android library for display list and be able to select the item as a [BottomSheet](https://developer.android.com/reference/com/google/android/material/bottomsheet/BottomSheetDialogFragment). From 095cc169d8e3244108df08a38a694f0582e74660 Mon Sep 17 00:00:00 2001 From: Pop Date: Tue, 7 Jul 2020 11:35:36 +0700 Subject: [PATCH 3/6] Upgrade gradle version to 6.1.1 --- build.gradle | 4 ++-- gradle/wrapper/gradle-wrapper.properties | 4 ++-- sheetselection/build.gradle | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index fa30fa6..d583f8a 100644 --- a/build.gradle +++ b/build.gradle @@ -1,14 +1,14 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. buildscript { - ext.kotlin_version = '1.3.61' + ext.kotlin_version = '1.3.72' repositories { google() jcenter() } dependencies { - classpath 'com.android.tools.build:gradle:3.6.1' + classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.github.dcendents:android-maven-gradle-plugin:2.1' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 7118542..d2c37e6 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Fri Feb 28 14:19:21 ICT 2020 +#Tue Jul 07 10:49:00 ICT 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip diff --git a/sheetselection/build.gradle b/sheetselection/build.gradle index 86eb736..8618c33 100644 --- a/sheetselection/build.gradle +++ b/sheetselection/build.gradle @@ -7,7 +7,7 @@ group='com.minibugdev.sheetselection' android { compileSdkVersion 29 - buildToolsVersion "29.0.3" + buildToolsVersion "30.0.0" defaultConfig { minSdkVersion 17 From 9feeca909d194fabea9bf8d6d08c9bbdfc42fc33 Mon Sep 17 00:00:00 2001 From: Pop Date: Thu, 9 Jul 2020 15:41:10 +0700 Subject: [PATCH 4/6] Fix can selected item when search not found --- .../sheetselection/SheetSelection.kt | 15 ++++- .../sheetselection/SheetSelectionAdapter.kt | 63 +++++++++++++------ .../src/main/res/layout/row_empty_item.xml | 9 +++ 3 files changed, 68 insertions(+), 19 deletions(-) create mode 100644 sheetselection/src/main/res/layout/row_empty_item.xml diff --git a/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelection.kt b/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelection.kt index 9a0c638..3a87f83 100644 --- a/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelection.kt +++ b/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelection.kt @@ -5,6 +5,7 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import androidx.annotation.StringRes import androidx.annotation.StyleRes import androidx.appcompat.widget.SearchView import androidx.fragment.app.Fragment @@ -23,6 +24,7 @@ class SheetSelection private constructor() : BottomSheetDialogFragment() { SheetSelectionAdapter( source = arguments?.getParcelableArrayList(ARGS_ITEMS) ?: emptyList(), selectedPosition = arguments?.getInt(ARGS_SELECTED_POSITION, NO_SELECT) ?: NO_SELECT, + searchNotFoundText = arguments?.getString(ARGS_SEARCH_NOT_FOUND_TEXT) ?: "Search not found.", onItemSelectedListener = onItemSelectedListener ) } @@ -112,7 +114,7 @@ class SheetSelection private constructor() : BottomSheetDialogFragment() { } } - class Builder(context: Context) { + class Builder(private val context: Context) { private val manager: FragmentManager? = when (context) { is FragmentActivity -> context.supportFragmentManager is Fragment -> context.requireFragmentManager() @@ -126,6 +128,7 @@ class SheetSelection private constructor() : BottomSheetDialogFragment() { private var selectedPosition: Int = NO_SELECT private var showDraggedIndicator: Boolean = false private var searchEnabled: Boolean = false + private var searchNotFoundText: String? = null private var listener: OnItemSelectedListener? = null fun theme(@StyleRes themeId: Int) = apply { @@ -157,6 +160,14 @@ class SheetSelection private constructor() : BottomSheetDialogFragment() { this.searchEnabled = enabled } + fun searchNotFoundText(text: String) = apply { + this.searchNotFoundText = text + } + + fun searchNotFoundText(@StringRes textResId: Int) = apply { + this.searchNotFoundText = context.getString(textResId) + } + fun onItemClickListener(listener: OnItemSelectedListener) = apply { this.listener = listener } @@ -170,6 +181,7 @@ class SheetSelection private constructor() : BottomSheetDialogFragment() { putInt(ARGS_SELECTED_POSITION, selectedPosition) putBoolean(ARGS_SHOW_DRAGGED_INDICATOR, showDraggedIndicator) putBoolean(ARGS_SEARCH_ENABLED, searchEnabled) + putString(ARGS_SEARCH_NOT_FOUND_TEXT, searchNotFoundText) } onItemClickListener = listener } @@ -187,6 +199,7 @@ class SheetSelection private constructor() : BottomSheetDialogFragment() { private const val ARGS_THEME = "SheetSelection:ARGS_THEME" private const val ARGS_TITLE = "SheetSelection:ARGS_TITLE" private const val ARGS_ITEMS = "SheetSelection:ARGS_ITEMS" + private const val ARGS_SEARCH_NOT_FOUND_TEXT = "SheetSelection:ARGS_SEARCH_NOT_FOUND_TEXT" private const val ARGS_SELECTED_POSITION = "SheetSelection:ARGS_SELECTED_POSITION" private const val ARGS_SHOW_DRAGGED_INDICATOR = "SheetSelection:ARGS_SHOW_DRAGGED_INDICATOR" private const val ARGS_SEARCH_ENABLED = "SheetSelection:ARGS_SEARCH_ENABLED" diff --git a/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelectionAdapter.kt b/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelectionAdapter.kt index f654519..a9d2cd0 100644 --- a/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelectionAdapter.kt +++ b/sheetselection/src/main/java/com/minibugdev/sheetselection/SheetSelectionAdapter.kt @@ -12,28 +12,38 @@ typealias OnItemSelectedListener = (item: SheetSelectionItem, position: Int) -> class SheetSelectionAdapter( private val source: List, private val selectedPosition: Int, + private val searchNotFoundText: String, private val onItemSelectedListener: OnItemSelectedListener? -) : RecyclerView.Adapter() { +) : RecyclerView.Adapter() { private var items: List = source override fun getItemCount() = items.size - override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { - return LayoutInflater.from(parent.context) - .inflate(R.layout.row_selection_item, parent, false) - .run { - ViewHolder(this) - } + override fun getItemViewType(position: Int): Int = + when (items[position].key) { + KEY_SEARCH_NOT_FOUND -> R.layout.row_empty_item + else -> R.layout.row_selection_item + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val view = LayoutInflater.from(parent.context).inflate(viewType, parent, false) + return when (viewType) { + R.layout.row_selection_item -> ItemViewHolder(view) + R.layout.row_empty_item -> EmptyViewHolder(view, searchNotFoundText) + else -> throw IllegalAccessException("Item view type doesn't match.") + } } - override fun onBindViewHolder(holder: ViewHolder, position: Int) { - holder.onBindView( - item = items[position], - position = position, - selected = position == selectedPosition, - onItemSelectedListener = onItemSelectedListener - ) + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is ItemViewHolder) { + holder.onBindView( + item = items[position], + position = position, + selected = position == selectedPosition, + onItemSelectedListener = onItemSelectedListener + ) + } } fun search(keyword: String?) { @@ -42,7 +52,11 @@ class SheetSelectionAdapter( } else { val searchResult = source.filter { it.value.contains(keyword, true) } if (searchResult.isEmpty()) { - updateItems(listOf(SheetSelectionItem("search_not_found", "Search not found."))) + updateItems( + listOf( + SheetSelectionItem(KEY_SEARCH_NOT_FOUND, searchNotFoundText) + ) + ) } else { updateItems(searchResult) } @@ -54,11 +68,12 @@ class SheetSelectionAdapter( notifyDataSetChanged() } - class ViewHolder(override val containerView: View) : RecyclerView.ViewHolder(containerView), - LayoutContainer { + class ItemViewHolder(override val containerView: View) : RecyclerView.ViewHolder(containerView), LayoutContainer { fun onBindView( - item: SheetSelectionItem, position: Int, selected: Boolean, + item: SheetSelectionItem, + position: Int, + selected: Boolean, onItemSelectedListener: OnItemSelectedListener? ) { val selectedIcon = if (selected) R.drawable.ic_check else 0 @@ -70,4 +85,16 @@ class SheetSelectionAdapter( } } } + + class EmptyViewHolder(override val containerView: View, emptyText: String) : RecyclerView.ViewHolder(containerView), + LayoutContainer { + + init { + textViewItem.text = emptyText + } + } + + companion object { + private const val KEY_SEARCH_NOT_FOUND = "SheetSelectionAdapter:search_not_found" + } } \ No newline at end of file diff --git a/sheetselection/src/main/res/layout/row_empty_item.xml b/sheetselection/src/main/res/layout/row_empty_item.xml new file mode 100644 index 0000000..4cbdd19 --- /dev/null +++ b/sheetselection/src/main/res/layout/row_empty_item.xml @@ -0,0 +1,9 @@ + + \ No newline at end of file From c9c25518d8ca8911e16352817079e998ed0b5333 Mon Sep 17 00:00:00 2001 From: Pop Date: Thu, 9 Jul 2020 15:41:48 +0700 Subject: [PATCH 5/6] Update README.md --- README.md | 2 ++ .../java/com/minibugdev/sheetselection/demo/MainActivity.kt | 1 + 2 files changed, 3 insertions(+) diff --git a/README.md b/README.md index d999fbd..6dd4668 100644 --- a/README.md +++ b/README.md @@ -39,6 +39,7 @@ SheetSelection.Builder(context) .selectedPosition(2) .showDraggedIndicator(true) .searchEnabled(true) + .searchNotFoundText("Nothing!!") .onItemClickListener { item, position -> // DO SOMETHING } @@ -50,6 +51,7 @@ SheetSelection.Builder(context) - Set selected item by `Builder.selectedPosition(Int)`. default is `SheetSelection.NO_SELECT` - Show dragged indicator by `Builder.showDraggedIndicator(Boolean)`. default is `false` - Set search enabled by `Builder.searchEnabled(Boolean)`. default is `false` +- Set search not found text by `Builder.searchNotFoundText(String)`. default is `Search not found.` - Set custom theme by `Builder.theme(@StyleRes)`. - To handle the item click listener by `Builder.onItemClickListener()`. diff --git a/app/src/main/java/com/minibugdev/sheetselection/demo/MainActivity.kt b/app/src/main/java/com/minibugdev/sheetselection/demo/MainActivity.kt index 5dee714..e0ac98a 100644 --- a/app/src/main/java/com/minibugdev/sheetselection/demo/MainActivity.kt +++ b/app/src/main/java/com/minibugdev/sheetselection/demo/MainActivity.kt @@ -50,6 +50,7 @@ class MainActivity : AppCompatActivity() { .selectedPosition(2) .showDraggedIndicator(true) .searchEnabled(true) + .searchNotFoundText("Nothing!!") .theme(R.style.Theme_Custom_SheetSelection) .onItemClickListener { item, position -> textview.text = "You selected `${item.value}`, At position [$position]." From ca458368c557647b79ce7b31f59df87881d84f50 Mon Sep 17 00:00:00 2001 From: Pop Date: Thu, 9 Jul 2020 15:42:57 +0700 Subject: [PATCH 6/6] Pump up version to 0.0.3 --- README.md | 2 +- sheetselection/build.gradle | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 6dd4668..ac983b9 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,7 @@ repositories { Add the dependency ``` groovy dependencies { - implementation 'com.github.minibugdev:sheetselection:0.0.2' + implementation 'com.github.minibugdev:sheetselection:0.0.3' } ``` diff --git a/sheetselection/build.gradle b/sheetselection/build.gradle index 8618c33..5a389b8 100644 --- a/sheetselection/build.gradle +++ b/sheetselection/build.gradle @@ -12,8 +12,8 @@ android { defaultConfig { minSdkVersion 17 targetSdkVersion 29 - versionCode 1 - versionName "0.0.2" + versionCode 2 + versionName "0.0.3" } buildTypes {