问题描述
我有一个 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 (将#修改为@)