RecylerView数据更新始终将重点放在第一项上

时间:2019-06-28 04:10:01

标签: java android android-recyclerview recycler-adapter

在使用新的RecylerView(其中包括ArrayList)更新EditText时遇到了一个问题。每当用新的RecylerView更新ArrayList时,程序总是选择EditText中第一项的RecyclerView

每次焦点转移时,下面的Listeners都会调用更新函数。因此,换句话说,您无法有效地选择EditText中的任何其他RecylerView项,因为当第一项失去焦点时,RecyclerView会更新为新的ArrayList并然后自动选择EditText中第一项的RecyclerView

默认情况下,notifyDataSetChanged()会自动选择第一项吗?还是因为某种方式设置了适配器?

private void refreshRecyclerList() {

    // Set titles for the Recycler View Items
    textInputList.clear();
    textInputList.add(new EditTextRecyclerItem("Monthly on New Stuff", stringSpendingMonthly));
    textInputList.add(new EditTextRecyclerItem("Yearly on New Stuff", stringSpendingAnnually));

    //mAdapter.updateArrayList(textInputList);
    mAdapter.notifyDataSetChanged();
}

我是Android的新手,如果这是我忽略的简单修复,请原谅。

2 个答案:

答案 0 :(得分:0)

尝试将这些行放在Itemview的父布局中

android:descendantFocusability="beforeDescendants"
android:focusableInTouchMode="true"

答案 1 :(得分:0)

如果调用此mAdapter.notifyDataSetChanged();那么这意味着整个recyclerview都在刷新,因此,如果您想关注更改过的项目myAdapter.notifyItemInserted(position)myAdapter.notifyItemChanged(),或者可以将recyclerview.scrollToPosition()

滚动到您的recyclerview

如果它不起作用,请尝试恢复我的状态。 `