在 RecyclerView

问题描述

我有一个 RecyclerView,其中包含一个 EditText 列表。

在 EditText 列表中,如果有任何文本与其他文本重复,则 EditText 的背景应更改为红色边框。 重复检查的函数放置在每个 EditText 的 setonFocuschangelistener() 中。

override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): BaseViewHolder {
   val baseViewHolder = super.onCreateViewHolder(parent,viewType)
   val EditText = baseViewHolder.findViewById(R.id.editText)

   EditText.setonFocuschangelistener { v,hasFocus ->    
      if(!hasFocus) {
         // check if text duplicated
         checkFunc()
      }

      notifyDataSetChanged()
   }

   return baseViewHolder
}

问题是,在调用 notifyDataSetChanged() 时,会打印 'Arrayindexoutofboundsexception' 异常并且应用程序崩溃。

以下是具体的错误信息。

java.lang.Arrayindexoutofboundsexception: length=36;指数=-1 在 java.util.ArrayList.get(ArrayList.java:439) at.test.ui.activity.EditTextTestAdapter$onCreateViewHolder$1.onFocusChange(EditTextTestAdapter.kt:21) 在 android.view.View.onFocusChanged(View.java:6921) 在 android.widget.TextView.onFocusChanged(TextView.java:9601) 在 android.view.View.clearFocusInternal(View.java:6758) 在 android.view.View.unFocus(View.java:6791) 在 android.view.ViewGroup.unFocus(ViewGroup.java:1086) 在 android.view.ViewGroup.removeViewInternal(ViewGroup.java:5207) 在 android.view.ViewGroup.removeViewAt(ViewGroup.java:5170) 在 androidx.recyclerview.widget.RecyclerView$5.removeViewAt(RecyclerView.java:882) 在 androidx.recyclerview.widget.ChildHelper.removeViewAt(ChildHelper.java:168) 在 androidx.recyclerview.widget.RecyclerView$LayoutManager.removeViewAt(RecyclerView.java:8639) 在 androidx.recyclerview.widget.RecyclerView$LayoutManager.scrapOrRecycleView(RecyclerView.java:9209) 在 androidx.recyclerview.widget.RecyclerView$LayoutManager.detachAndScrapAttachedViews(RecyclerView.java:9195) 在 androidx.recyclerview.widget.linearlayoutmanager.onLayoutChildren(linearlayoutmanager.java:630) 在 androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134) 在 androidx.recyclerview.widget.RecyclerView.dispatchLayout(RecyclerView.java:3851) 在 androidx.recyclerview.widget.RecyclerView.consumePendingUpdateOperations(RecyclerView.java:1867) 在 androidx.recyclerview.widget.RecyclerView.focusSearch(RecyclerView.java:2797) 在 android.view.ViewGroup.focusSearch(ViewGroup.java:960) 在 android.view.View.focusSearch(View.java:10131) 在 android.widget.TextView.onCreateInputConnection(TextView.java:7517) 在 androidx.appcompat.widget.AppCompatEditText.onCreateInputConnection(AppCompatEditText.java:195) 在 android.view.inputmethod.InputMethodManager.startInputInner(InputMethodManager.java:1237) 在 android.view.inputmethod.InputMethodManager.onPostwindowFocus(InputMethodManager.java:1538) 在 android.view.ViewRootImpl$ViewRootHandler.handleMessage(ViewRootImpl.java:3866) 在 android.os.Handler.dispatchMessage(Handler.java:105) 在 android.os.Looper.loop(Looper.java:164) 在 android.app.ActivityThread.main(ActivityThread.java:6541) 在 java.lang.reflect.Method.invoke(Native Method) 在 com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:240) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:767)

我不知道是什么让 notifyDataSetChanged() 的索引值为 -1 的确切原因。

如果有人能帮我解决这个问题,我将不胜感激。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...