recyclerview中的再生edittext

时间:2019-07-17 03:19:46

标签: java android firebase android-recyclerview android-edittext

使用RecyclerView,将回收屏幕外的EditText。例如,如果我们有一个200个项目的列表,并且一次显示2个项目,那么我们将永远只有2个EditText。他们会将较高的EditText重用于较低的元素。

例如,这是一个包含EditText的列表,该列表一次仅显示2,并且随着用户滚动,它将回收并重新使用它们。

  1. EditText A
  2. Edittext B
  3. EditText C(已回收)
  4. EditText D(已回收)
  5. ....

这意味着我们以后不能再遍历所有元素并获取值,因为它们不存储其值。

所以,我要问的是,无论如何都可以循环访问所有项目,并获得价值,甚至回收的价值,并将其保存到Firebase中

编辑: 我有一个带有编辑文本的recyclerview,用户在编辑文本内输入数字,当他单击“保存”按钮时,一个for循环遍历所有recyclerview编辑文本并将数据保存到Firebase

这是我的片段类

@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    View view = inflater.inflate(R.layout.purchases_list_activity, container, false);
    mItem = new ArrayList<>();
    mAdapter = new PurchasesAdapter(getContext(), mItem, this);
    re = view.findViewById(R.id.itemsPListView);
    re.setLayoutManager(new LinearLayoutManager(getActivity()));
    re.setAdapter(mAdapter);



    fab = view.findViewById(R.id.fab_purchases);
    fab.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            for (int i = 0; i < mItem.size(); i++) {
                final ItemsAdapter mylist = mItem.get(i);

              View childView = re.getChildAt(i);



                final EditText Qty = childView.findViewById(R.id.itemNewPcs);
                final String qty = Qty.getText().toString();

Toast.makeText(getContext(),qty+"",Toast.LENGTH_LONG).show();



..
}

1 个答案:

答案 0 :(得分:0)

我认为您可能需要RecyclerView的{​​{1}}功能。基本上,您实现自己的类,该类实现OnChildAttachStateChangeListener接口。具体来说,实施onChildViewAttachedToWindow方法可以保存到Firebase或添加到可以稍后添加到Firebase的列表中-基本上满足您的任何需求。您只需通过addOnChildAttachStateChangeListener()方法附加自定义监听器即可。

希望有帮助。