android - 如何让recyclerview加载所有itemviews

标签 android android-recyclerview kotlin

我有一个可加载多达 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/

相关文章:

android - TextView 在某些分辨率下被删减

android - 如何在没有服务器端分页的情况下在android中使用分页?

android - 如何在 Kotlin 中获取泛型类型参数的类

spring - Kotlin Spring boot @ConfigurationProperties 用于列表

java - 在函数中模拟私有(private)变量以测试 Junit4

java - 通过相机拍照并将其以字节数组形式发送到服务器

java - 从监听器返回值

java - 向适配器添加新数据会影响初始值

android - 如何在其他应用播放音乐时暂停视频并在音乐停止后继续播放?

android - 在android中上传文件以及其他字符串参数