Skip to content

Commit

Permalink
search dialog selection fix commit
Browse files Browse the repository at this point in the history
  • Loading branch information
qkopy-dev committed Jan 1, 2020
1 parent 1fa9ffa commit 4c73b5f
Show file tree
Hide file tree
Showing 7 changed files with 92 additions and 35 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -23,13 +23,16 @@ class MainActivity : AppCompatActivity(), OnSearchItemSelected {
}

searchableDialog = SearchableDialog(this, searchListItems, getString(R.string.country))
searchableDialog.setOnItemSelected(this)


val countryTextInputEditText = findViewById<TextInputEditText>(R.id.countryTextInputEditText)
countryTextInputEditText.setOnClickListener { searchableDialog.show() }

}

override fun onClick(position: Int, searchListItem: SearchListItem) {
searchableDialog.dismiss()
countryCodeTextView.text = searchListItem.id.toString()
countryNameTextView.text = searchListItem.title
}
Expand Down
1 change: 1 addition & 0 deletions searchdialog/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ dependencies {
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
implementation 'androidx.recyclerview:recyclerview:1.1.0'
}
repositories {
mavenCentral()
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.ajithvgiri.searchdialog

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.items_view_layout.view.*


class SearchAdapter(var onSearchItemSelected: OnSearchItemSelected, private var list: ArrayList<SearchListItem>) : RecyclerView.Adapter<SearchAdapter.SearchAdapterViewHolder>() {


override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SearchAdapterViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.items_view_layout, parent, false)
return SearchAdapterViewHolder(view)
}

override fun getItemCount(): Int {
return list.size
}

override fun onBindViewHolder(holder: SearchAdapterViewHolder, position: Int) {
val searchListItem = list[position]
holder.bind(searchListItem, onSearchItemSelected, position)
}

class SearchAdapterViewHolder(view: View) : RecyclerView.ViewHolder(view) {
fun bind(searchListItem: SearchListItem, onSearchItemSelected: OnSearchItemSelected, position: Int) {
itemView.text1.text = searchListItem.title
itemView.text1.setOnClickListener {
onSearchItemSelected.onClick(position = position, searchListItem = searchListItem)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.ajithvgiri.searchdialog

import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ArrayAdapter
Expand All @@ -12,18 +13,17 @@ import kotlin.collections.ArrayList
/**
* Created by ajithvgiri on 06/11/17.
*/
class SearchListAdapter(context: Context, resource: Int, textViewResourceId: Int, objects: ArrayList<SearchListItem>) : ArrayAdapter<Any?>(context, resource, textViewResourceId, objects.toList()) {
class SearchListAdapter(context: Context, objects: ArrayList<SearchListItem>) : ArrayAdapter<SearchListItem>(context, R.layout.items_view_layout) {
var searchListItems: ArrayList<SearchListItem> = objects
var suggestions: ArrayList<SearchListItem> = ArrayList()
var filter = CustomFilter()
private val textViewResourceID: Int = textViewResourceId

override fun getCount(): Int {
return searchListItems.size
}

override fun getItem(i: Int): Any? {
return searchListItems[i].title
override fun getItem(i: Int): SearchListItem {
return searchListItems[i]
}

override fun getItemId(i: Int): Long {
Expand All @@ -40,8 +40,12 @@ class SearchListAdapter(context: Context, resource: Int, textViewResourceId: Int
return position
}

override fun getView(i: Int, inflateview: View, viewGroup: ViewGroup): View {
val tv = inflateview.findViewById<View>(textViewResourceID) as TextView
override fun getView(i: Int, view: View, parent: ViewGroup): View {
var inflateview = view
if (inflateview == null) {
inflateview = LayoutInflater.from(context).inflate(R.layout.items_view_layout, parent)
}
val tv = inflateview.findViewById<View>(R.id.text1) as TextView
tv.text = searchListItems[i].title
return inflateview
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,13 @@ import android.app.Activity
import android.app.AlertDialog
import android.text.Editable
import android.text.TextWatcher
import android.util.Log
import android.view.View
import android.widget.AdapterView.OnItemClickListener
import android.widget.EditText
import android.widget.ListView
import android.widget.TextView
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView


/**
* Created by ajithvgiri on 06/11/17.
Expand All @@ -19,12 +20,11 @@ class SearchableDialog {
var activity: Activity
private var dialogTitle: String = ""
private lateinit var onSearchItemSelected: OnSearchItemSelected
lateinit var alertDialog: AlertDialog
private lateinit var alertDialog: AlertDialog
private var position = 0
var style = 0
private lateinit var searchListItem: SearchListItem
lateinit var adapter: SearchListAdapter
lateinit var listView: ListView
lateinit var adapter: SearchAdapter
lateinit var recyclerView: RecyclerView

constructor(activity: Activity, searchListItems: ArrayList<SearchListItem>, dialogTitle: String) {
this.searchListItems = searchListItems
Expand Down Expand Up @@ -58,29 +58,34 @@ class SearchableDialog {
val rippleViewClose = view.findViewById<View>(R.id.close) as TextView
val title = view.findViewById<View>(R.id.spinerTitle) as TextView
title.text = dialogTitle
listView = view.findViewById<View>(R.id.list) as ListView
recyclerView = view.findViewById<View>(R.id.list) as RecyclerView
val layoutManager = LinearLayoutManager(activity)
recyclerView.layoutManager = layoutManager
val dividerItemDecoration = DividerItemDecoration(recyclerView.context, layoutManager.orientation)
recyclerView.addItemDecoration(dividerItemDecoration)
val searchBox = view.findViewById<View>(R.id.searchBox) as EditText
adapter = SearchListAdapter(activity, R.layout.items_view_layout, R.id.text1, searchListItems)
listView.adapter = adapter
adapter = SearchAdapter(onSearchItemSelected,searchListItems)
recyclerView.adapter = adapter
adb.setView(view)
alertDialog = adb.create()
alertDialog.window?.attributes?.windowAnimations = style //R.style.DialogAnimations_SmileWindow;
alertDialog.setCancelable(false)
listView.onItemClickListener = OnItemClickListener { _, view, _, _ ->
val t = view.findViewById<TextView>(R.id.text1)
for (j in searchListItems.indices) {
if (t.text.toString().equals(searchListItems[j].toString(), ignoreCase = true)) {
position = j
searchListItem = searchListItems[position]
}
}
try {
onSearchItemSelected
} catch (e: Exception) {
Log.e(TAG, e.message)
}
alertDialog.dismiss()
}

// listView.onItemClickListener = OnItemClickListener { _, _view, _, _ ->
// val t = _view.findViewById<TextView>(R.id.text1)
// for (j in searchListItems.indices) {
// if (t.text.toString().equals(searchListItems[j].toString(), ignoreCase = true)) {
// position = j
// searchListItem = searchListItems[position]
// }
// }
// try {
// onSearchItemSelected
// } catch (e: Exception) {
// Log.e(TAG, e.message)
// }
// alertDialog.dismiss()
// }
searchBox.addTextChangedListener(object : TextWatcher {
override fun beforeTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
override fun onTextChanged(charSequence: CharSequence, i: Int, i1: Int, i2: Int) {}
Expand All @@ -92,8 +97,8 @@ class SearchableDialog {
filteredValues.add(item)
}
}
adapter = SearchListAdapter(activity, R.layout.items_view_layout, R.id.text1, filteredValues)
listView.adapter = adapter
adapter = SearchAdapter(onSearchItemSelected,filteredValues)
recyclerView.adapter = adapter
}
})
rippleViewClose.setOnClickListener { alertDialog.dismiss() }
Expand All @@ -116,6 +121,14 @@ class SearchableDialog {
adapter.notifyDataSetChanged()
}

/***
*
* dismiss the dialog
*/
fun dismiss(){
alertDialog.dismiss()
}

companion object {
private const val TAG = "SearchableDialog"
}
Expand Down
3 changes: 2 additions & 1 deletion searchdialog/src/main/res/layout/items_view_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,9 @@
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/text1"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_height="wrap_content"
android:gravity="center|start"

android:padding="13dp"
android:textSize="16sp">

Expand Down
2 changes: 1 addition & 1 deletion searchdialog/src/main/res/layout/search_dialog_layout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@
android:layout_height="0.1dp"
android:background="@color/color_divider" />

<ListView
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/list"
android:layout_width="match_parent"
android:layout_height="300dp"
Expand Down

0 comments on commit 4c73b5f

Please sign in to comment.