簡體   English   中英

recyclerview 中的回收編輯文本

[英]recycled edittext inside recyclerview

使用 RecyclerView,屏幕外的 EditTexts 將被回收。 例如,如果我們有一個包含 200 個項目的列表,並且一次顯示 2 個項目,那么我們將只有 2 個 EditText。 他們將為較低的元素重用較高的 EditText。

例如,這里有一個包含 EditText 的列表,一次只顯示 2 個,當用戶滾動時,它將回收和重用它們。

  1. 編輯文本 A
  2. 編輯文本 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();



..
}

我認為您可能需要的是RecyclerViewOnChildAttachStateChangeListener功能。 基本上,您實現自己的類來實現OnChildAttachStateChangeListener接口。 具體來說,實現onChildViewAttachedToWindow方法以保存到 Firebase 或添加到稍后可以添加到 Firebase 的列表中 - 基本上是您需要的任何內容。 您只需通過addOnChildAttachStateChangeListener()方法附加您的自定義偵聽器。

希望有幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM