From 9a2907ea0f1ae7b9afa19a411b369aab9af821c6 Mon Sep 17 00:00:00 2001 From: gedoor Date: Fri, 7 Jun 2019 18:53:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../app/ui/sourceedit/SourceEditAdapter.kt | 46 ++++++++++++++++++- app/src/main/res/values/ids.xml | 3 ++ 2 files changed, 47 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt index 6c468b9be..31f4cf989 100644 --- a/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt +++ b/app/src/main/java/io/legado/app/ui/sourceedit/SourceEditAdapter.kt @@ -1,10 +1,13 @@ package io.legado.app.ui.sourceedit +import android.text.Editable +import android.text.TextWatcher import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.RecyclerView import io.legado.app.R +import kotlinx.android.synthetic.main.item_source_edit.view.* class SourceEditAdapter : RecyclerView.Adapter() { @@ -15,7 +18,7 @@ class SourceEditAdapter : RecyclerView.Adapter() } override fun onBindViewHolder(holder: MyViewHolder, position: Int) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + holder.bind(sourceEditEntities[position]) } override fun getItemCount(): Int { @@ -23,12 +26,51 @@ class SourceEditAdapter : RecyclerView.Adapter() } class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { + fun bind(sourceEditEntity: SourceEditEntity) = with(itemView) { + if (editText.getTag(R.id.tag1) == null) { + val listener = object : View.OnAttachStateChangeListener { + override fun onViewAttachedToWindow(v: View) { + editText.isCursorVisible = false + editText.isCursorVisible = true + editText.isFocusable = true + editText.isFocusableInTouchMode = true + } + override fun onViewDetachedFromWindow(v: View) { + + } + } + editText.addOnAttachStateChangeListener(listener) + editText.setTag(R.id.tag1, listener) + } + editText.getTag(R.id.tag2)?.let { + if (it is TextWatcher) { + editText.removeTextChangedListener(it) + } + } + editText.setText(sourceEditEntity.value) + sourceEditEntity.hint?.let { textInputLayout.hint = context.getString(it) } + val textWatcher = object : TextWatcher { + override fun beforeTextChanged(s: CharSequence, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence, start: Int, before: Int, count: Int) { + + } + + override fun afterTextChanged(s: Editable?) { + sourceEditEntity.value=(s?.toString()) + } + } + editText.addTextChangedListener(textWatcher) + editText.setTag(R.id.tag2, textWatcher) + } } class SourceEditEntity { var key:String?=null var value:String?=null - var hint:String?=null + var hint:Int?=null } } \ No newline at end of file diff --git a/app/src/main/res/values/ids.xml b/app/src/main/res/values/ids.xml index 341c5b250..0e7713b39 100644 --- a/app/src/main/res/values/ids.xml +++ b/app/src/main/res/values/ids.xml @@ -4,4 +4,7 @@ + + + \ No newline at end of file