pull/36/head
parent
91e3ae3c5d
commit
5c3d50657a
@ -0,0 +1,3 @@ |
||||
package io.legado.app.data.entities |
||||
|
||||
data class EditEntity(var key: String, var value: String?, var hint: Int) |
@ -0,0 +1,85 @@ |
||||
package io.legado.app.ui.rss.source.edit |
||||
|
||||
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 io.legado.app.data.entities.EditEntity |
||||
import kotlinx.android.synthetic.main.item_source_edit.view.* |
||||
|
||||
class RssSourceEditAdapter : RecyclerView.Adapter<RssSourceEditAdapter.MyViewHolder>() { |
||||
|
||||
var editEntities: ArrayList<EditEntity> = ArrayList() |
||||
set(value) { |
||||
field = value |
||||
notifyDataSetChanged() |
||||
} |
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder { |
||||
return MyViewHolder( |
||||
LayoutInflater.from( |
||||
parent.context |
||||
).inflate(R.layout.item_source_edit, parent, false) |
||||
) |
||||
} |
||||
|
||||
override fun onBindViewHolder(holder: MyViewHolder, position: Int) { |
||||
holder.bind(editEntities[position]) |
||||
} |
||||
|
||||
override fun getItemCount(): Int { |
||||
return editEntities.size |
||||
} |
||||
|
||||
class MyViewHolder(view: View) : RecyclerView.ViewHolder(view) { |
||||
fun bind(editEntity: EditEntity) = 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(editEntity.value) |
||||
textInputLayout.hint = context.getString(editEntity.hint) |
||||
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?) { |
||||
editEntity.value = (s?.toString()) |
||||
} |
||||
} |
||||
editText.addTextChangedListener(textWatcher) |
||||
editText.setTag(R.id.tag2, textWatcher) |
||||
} |
||||
} |
||||
|
||||
} |
Loading…
Reference in new issue