使用动态Edittext的RecyclerView

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用动态Edittext的RecyclerView相关的知识,希望对你有一定的参考价值。

我创建了我的RcyclerView及其适配器,如下所示。

RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
recyclerView.setHasFixedSize(true);

final ArrayList<String> list = new ArrayList<>();
final RecyclerViewAdapter adapter = new RecyclerViewAdapter(list);
recyclerView.setAdapter(adapter);
findViewById(R.id.button).setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        int count = list.size();
        list.add(count + " * 10 = " + (count * 10));
        adapter.notifyDataSetChanged();
    }
});

而我的adapter的ViewHolder是

class ViewHolder extends RecyclerView.ViewHolder {
    EditText item;

    ViewHolder(View itemView) {
        super(itemView);
        item = (EditText) itemView.findViewById(R.id.item);
        item.requestFocus(); //I want my last row's EditText get focused automatically.
    }
}

所以我想让我的最后一个EditText自动聚焦。但是当我添加新的最后一个edittext聚焦时,再添加一个,然后第一个聚焦,然后最后一个,然后第一个...等...请参考gif。

enter image description here

这里不应该转到第一个edittext。

我不知道如何稳定这个问题。

答案

通过使用以下方法,我实现了目标。感谢所有试图帮助我的人。

@Override
public void onViewAttachedToWindow(ViewHolder holder) {
    super.onViewAttachedToWindow(holder);
    if (holder.item != null && holder.item.getText().length() == 0) {
        holder.item.requestFocus();
    }
}

以上是关于使用动态Edittext的RecyclerView的主要内容,如果未能解决你的问题,请参考以下文章

如何在 RecyclerView 中制作动态微调器?

RecyclerView 在新行中显示以前在 EditText 中输入的值

Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑

Android踩坑日记:RecyclerView中EditText和ImageView的ViewHolder复用坑

RecyclerView列表搜索(过滤)EditText问题

RecyclerView布局item中使用EditText,在刷新的时候,造成了数据的错乱