2016-04-27 106 views
0

我有一個列表視圖哪些項目是CheckedTextViews複選框。然而,每當我檢查一個並滾動列表視圖並將它們隱藏時,當我通過重新上傳返回給它們時,它們不再被檢查!我在互聯網上看到,列表視圖,滾動時,不知怎的,隱藏的項目在回滾之後會被回收(如果我是正確的,它們會返回到默認狀態)。我也在自定義適配器中讀到,我必須使用一個名爲「setOnCheckedChangeListener」的方法,但checkedTextViews沒有特定的方法!所以我認爲我的問題可能與listviews。我該如何解決這個問題?謝謝。CheckedTextView與ListView

更新:所以這是我的自定義適配器和模型類。

​​

這是模型類:

public Model(String name, String phoneNumber, int value) { 
    this.name = name; 
    this.value = value; 
    this.phoneNumber = phoneNumber; 
} 

public String getName() { 
    return this.name; 
} 

public int getValue() { 
    return this.value; 
} 

public String getPhoneNumber() { 
    return this.phoneNumber; 
} 
+0

的可能重複[複選框選中時我滾動listview在Android](http://stackoverflow.com/questions/10895763/checkbox-unchecked-when-i-scroll-listview-in-android) –

+0

你使用什麼樣的適配器?,你傳遞一個數組白色值? – Akariuz

+0

我正在使用自定義適配器,是的,我正在傳遞一個數組值。 – user3882221

回答

1

您可以使用onCheckedChanged偵聽器將checkBox的狀態保存在適配器中。然後,當您創建viewHolders時,使用適配器中的數據設置複選框的選中狀態。 希望它有幫助!

+0

CheckedTextView沒有方法「onCheckedChangeListener」! – user3882221

+0

然後你可以實現onClickListener,在那裏你可以得到如果視圖被選中或沒有。你可以使用「((CheckedTextView)v).isChecked()」 –

+0

我試過了,但我遇到了另一個問題。當我實現onClickListener時,我無法獲得點擊複選框的位置,因爲我必須在參數中聲明它的最終位置。如果我宣佈它最終它不會再改變值...所以基本上我不能檢查或取消選中其他CheckedTextViews。 – user3882221

0

你可以按照這個博客的過程。它基於同樣的問題。 Blog link

0

您需要使用的對象,如複選框像

public class FormCheck { 

    private String name; 
    private boolean isChecked; 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 

    public boolean isChecked() { 
     return isChecked; 
    } 

    public void setIsChecked(boolean isChecked) { 
     this.isChecked = isChecked; 
    } 

} 

的價值,並在getView(),你做這樣的事情:

checkedTextView.setChecked(itemArray.get(position).getIsChecked); 

    checkedTextView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      if (checkedTextView.isChecked()) 
       itemArray.get(position).setIsChecked = true; 
      else 
       itemArray.get(position).setIsChecked = false; 
     } 
    }); 
+0

CheckedTextView沒有onCheckedChangeListener()方法,只有CheckBoxes有! – user3882221

+0

在你的自定義視圖中你沒有CheckBox? – Akariuz

+0

我編輯了我的答案,以您的需求 – Akariuz