2016-07-24 55 views
1

我有一個包含近10個項目的小列表(並且在任何情況下都不會超過20個)。活動創建後不會更改。帶有EditTexts和複選框的小型RecyclerView的問題

我的當前設置:

  • 我使用列表中RecyclerView
  • 我有一個CheckboxEditText(說1和2)在每個列表項。
  • 我根據選中的複選框和EditText-1的值做一些計算,並將新值填充到另一個EditText-2。
  • 在某些情況下,用戶編輯EditText-2的值並且再次發生計算,它將填充到所有其他位置,包括所有項目的EditText-1。

問題解決:

另一個問題:現在

,作爲RecyclerView的所有其他項目的EditText-1的變化值的數據變化,我打電話notifyDatasetChanged(),以反映執行後的變化計算。但這導致EditText放鬆焦點。它打算在notifyDatasetChanged之後重新創建所有視圖。在這種情況下,即使是穩定的ID也無濟於事。 (有關於此問題的錯誤:https://code.google.com/p/android/issues/detail?id=204277)。該值甚至沒有反映和EditText失去它的重點。

我能做些什麼?:

  • 有什麼解決方法嗎?設置穩定的ID後,我看到項目值發生了奇怪的變化。
  • 由於項目是固定的,onCreate後沒有添加和刪除任何項目,在容器中使用滾動視圖並通過在循環中手動膨脹視圖添加項目(並且更新也會很容易,我認爲)將使我的生活成爲容易一點嗎?

回答

0

讓我們取對象數組來保存您的EditText的狀態以及要填充到列表中的值。例如,列表中的每個項目都可能看起來像這個類。

public class ListItemCustom { 

    // Add some extra parameters to handle the state of the EditTexts 
    public String textOfEditText1; 
    public String textOfEditText2; 
    public boolean focusEditText1; 
    public boolean focusEditText2; 

    // Contains original values of your list item 
    public OriginalListItem mOriginalListItem; 
} 

現在採取ArrayListItemCustom定製的ArrayList有填充內onCreate您的項目。然後將這個列表傳遞給適配器,然後相應地處理EditText和值。

希望這會有所幫助。