import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.EditText
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
open class CustomAdapter(private val data: DataClass, private val activity: MainActivity) :
RecyclerView.Adapter<CustomAdapter.ViewHolder>() {
init {
setHasStableIds(true)
}
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): ViewHolder {
val rowItem: View =
LayoutInflater.from(parent.context).inflate(com.example.essai2.R.layout.list_item_view, parent, false)
var myview= ViewHolder(rowItem)
//myview.setOnClickListener1()
//myview.setOnClickListener2()
return myview
}
override fun onBindViewHolder(
holder: ViewHolder,
position: Int
) {
holder.editText.setText(data.list1[position])
holder.editText2.setText(data.list2[position])
holder.textview.setText(data.list3[position])
holder.setOnClickListener1()
holder.setOnClickListener2()
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getItemCount(): Int {
return data.list1.size
}
inner class ViewHolder(rowItem: View) : RecyclerView.ViewHolder(rowItem) {
val textview : TextView = rowItem.findViewById(com.example.essai2.R.id.textview)
val editText : EditText= rowItem.findViewById(com.example.essai2.R.id.editText)
val editText2 : EditText= rowItem.findViewById(com.example.essai2.R.id.editText2)
fun fonction3(position: Int)
{
if (position >=1 && position <=98) {
data.list3[position] = (0.5 * (data.list2[position - 1].toDouble() + data.list2[position + 1].toDouble())).toString()
//activity.Update()
}
}
fun setOnClickListener1() {
editText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
data.list1[getAdapterPosition()]= editText.text.toString()
// activity.fonction()
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
})
}
fun setOnClickListener2() {
editText2.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
data.list2[getAdapterPosition()] = editText2.text.toString()
activity.fonction2()
fonction3(getAdapterPosition())
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
})
}
}
}
import android.os.Bundle
import android.widget.EditText
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
import androidx.recyclerview.widget.DividerItemDecoration
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
recyclerView.layoutManager = LinearLayoutManager(this)
recyclerView.adapter = CustomAdapter(DataClass(),this)
recyclerView.addItemDecoration(DividerItemDecoration(this, DividerItemDecoration.VERTICAL))
var textView2: TextView
textView2 = findViewById(R.id.textView)
var editText : EditText
}
fun Update()
{
// findViewById<RecyclerView>(R.id.recycler_view).getAdapter()?.notifyDataSetChanged()
val recyclerView = findViewById<RecyclerView>(R.id.recycler_view)
recyclerView.adapter=CustomAdapter(DataClass(),this)
(recyclerView.adapter as CustomAdapter).notifyDataSetChanged()
}
fun fonction ()
{
var textView2: TextView
textView2 = findViewById(R.id.textView)
textView2.text="!!!!!!"
}
fun fonction2 ()
{
var textView2: TextView
textView2 = findViewById(R.id.textView)
textView2.text="?????"
}
private fun generateData(): List<String> {
val data: MutableList<String> = ArrayList()
for (i in 0..99) {
data.add(i.toString() + "th Element")
}
return data
}
}
class DataClass(){
var list1: MutableList<String> = generateData2() as MutableList<String>
var list2: MutableList<String> = generateData3() as MutableList<String>
var list3: MutableList<String> = generateData4() as MutableList<String>
private fun generateData2(): List<String> {
val data: MutableList<String> = mutableListOf()
for (i in 0..99) {
data.add(i.toString())
}
return data
}
private fun generateData3(): List<String> {
val data: MutableList<String> =mutableListOf()
for (i in 0..99) {
data.add((10*i).toString())
}
return data
}
private fun generateData4(): List<String> {
val data: MutableList<String> = mutableListOf()
for (i in 0..99) {
data.add("none")
}
return data
}
}
编辑:下面是list_item_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/textview2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView"
android:textSize="16dp" />
<TextView
android:id="@+id/textview"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:text="TextView"
android:textSize="16dp" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editText2"
android:layout_width="196dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:focusableInTouchMode="true"
android:focusedByDefault="false"
android:hint="hint" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:focusedByDefault="false"
android:hint="hint" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
我只是根据我们下面的对话改变了我的答案。
首先,这里是您的XML文件(我只是更改了视图的id,没有其他内容):
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
app:layout_constraintBottom_toBottomOf="parent"
tools:ignore="MissingConstraints">
<TextView
android:id="@+id/tv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:text="TextView2"
android:textSize="16dp" />
<TextView
android:id="@+id/tv1"
android:layout_width="wrap_content"
android:layout_height="35dp"
android:text="TextView1"
android:textSize="16dp" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et2"
android:layout_width="196dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:focusableInTouchMode="true"
android:focusedByDefault="false"
android:hint="hint" />
<com.google.android.material.textfield.TextInputEditText
android:id="@+id/et1"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:focusedByDefault="false"
android:hint="hint" />
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
这是您的适配器(我检查了所有内容,没有错误):
import android.content.Context
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 kotlinx.android.synthetic.main.list_item_view.view.*
class CustomAdapter(private val data : DataClass, private val context : Context) :
RecyclerView.Adapter<CustomAdapter.ViewHolder>() {
init {
setHasStableIds(true)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val rowItem: View = LayoutInflater.from(context).inflate(R.layout.list_item_view, parent, false)
return ViewHolder(rowItem)
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
holder.itemView.tv1.setText(data.list3[position])
holder.itemView.et1.setText(data.list1[position])
holder.itemView.et2.setText(data.list2[position])
holder.itemView.et1.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
data.list1[position]= holder.itemView.et1.text.toString()
// activity.fonction()
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
})
holder.itemView.et2.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(p0: Editable?) {
data.list2[position] = holder.itemView.et2.text.toString()
//this is instead of `fonction2()`
holder.itemView.tv2.text = "?????"
//fonction2()
fonction3(position)
}
override fun beforeTextChanged(p0: CharSequence?, p1: Int, p2: Int, p3: Int) {
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
}
})
}
override fun getItemId(position: Int): Long {
return position.toLong()
}
override fun getItemCount(): Int {
return data.list1.size
}
inner class ViewHolder(rowItem: View) : RecyclerView.ViewHolder(rowItem) {
}
fun fonction3(position: Int) {
if (position in 1..98) {
data.list3[position] = (0.5 * (data.list2[position - 1].toDouble() + data.list2[position + 1].toDouble())).toString()
//activity.Update()
}
}
}
问题内容: 我正在尝试创建一些放置适当的说明性工具提示,用户可以单击这些提示以了解站点界面的工作方式。每个工具提示都有一个“下一个”链接,可通过修改类(因此更改为CSS)来切换上一个和下一个工具提示的可见性。 这是应该执行此操作的一些简化代码: 当我将此代码粘贴到控制台中时(或在页面加载时)立即调用(并正确切换类)。如果我将替换为,则按预期触发。我究竟做错了什么? 问题答案: 当您绑定事件时,您就
我想用quartz scheduler使用jdbc数据存储立即执行作业~。然而,即使我使用now()或调用triggerjob进行调度,在调度和触发器fire之间也有20-30秒的延迟。 我尝试用一个简单的触发器执行作业: 并且我还尝试用调度程序触发: 下面是显示延迟的侦听器日志。
问题内容: 这是我第一次真正接触JavaScript。当然,我曾经使用过它,但是我从未真正写过任何东西。 无论如何,我遇到了一个非常奇怪的问题,希望有人可以帮我解决。 我正在尝试使div的文本从黑变白。很简单,是吗? 以下代码 有效 。它将颜色更改为白色,但是,忽略了500ms的setTimeout时间。 如果您使用Chrome浏览器并查看JS控制台,您将很容易看到doFade()方法几乎是即时调
嗨,我目前正在使用警报管理器。我写了下面给出的代码。根据代码,警报管理器应该在10秒后触发,但在我的代码中,警报管理器会立即触发。请帮助。 还有我的警报接收课 我已经在清单中添加了所需的权限。
我应该做什么来运行CRON触发器现在运行一次,并遵循表达式,例如 每5分钟触发一次。 我看了下面的帖子 https://groups.google.com/forum/#!topic/quartznet/gav10e4tj50 如果要确保作业立即运行,可以将开始时间设置为datetime.now的前一天,因此可以将代码更改为: CronTrigger触发器=新的CronTrigger(“trig”
我对Android系统比较陌生,所以我在这里很困惑... NotificationReceiver.java manifest.xml