gpt4 book ai didi

android - 如何让recyclerview加载所有itemviews

转载 作者:行者123 更新时间:2023-12-02 13:22:35 27 4
gpt4 key购买 nike

我有一个可加载多达 30 个 itemview 及更多的 recyclerview
在每个 itemview 中它都有一个 Edittext 让用户输入一些数据
还有一个保存按钮。
在保存按钮内点击

for (i in 0 until count){ //count = myRecycler.layoutmanager.itemcount
val view = myRecycler.layoutmanager!!..findViewByPosition(i)
val input: EditText = view!!.findViewById(R.id.input)
list.add(input.text.toString())
}

它适用于每个 itemview 按位置
但是因为 recyclerview 只加载适合屏幕的项目,它会在 View val 处为屏幕外的项目提供空指针
有什么解决方案可以做到这一点
我得到的解决方案
是在每个itemview上添加一个保存按钮,这样当用户输入数据时,他点击保存按钮等等。
但这不是我需要的

最佳答案

我建议您通过 setOnFocusChangeListener 在每个 editText 失去焦点时触发回调,以更新您拥有的 Activity 或 Fragment 中的数据列表。 RecyclerView.Adapter 中的代码

interface Calllback{
function updateValue(int position, String value)
}

@Override
public void onBindViewHolder(myViewHolder holder, int position) {

...
holder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {
public void onFocusChange(View v, boolean hasFocus) {
if(!hasFocus) {
callback.updateValue(holder.getAdapterPosition(), ((EditText)v).getText().toString());
}
}
});
...
}

在实现回调接口(interface)的 Activity 中,
class MainActivity extends AppCompatActivity implements Callback{

private String data = new String[30];

...

@Override
function updateValue(int position, String value){
data[position] = value;
}

...
}

关于android - 如何让recyclerview加载所有itemviews,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52031463/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com