ayant quelques case à cocher dynamiquement gonflé/ajouté, quand certains sont vérifiés la rotation ou de minimiser l'application (pour faciliter le déclenchement de l'affaire, allumer le 'Ne pas garder l'activité en vie '), la vue de l'interface utilisateur restaurée affiche toutes les cases cochées. Lorsque os saveInstance stocke les éléments cochés dans une liste, et lorsque le système d'exploitation pour restaurer le fragment, nous obtenons la liste des éléments cochés et lorsque la case checkbox est appelée, elle appelle setChecked (true) ou setChecked (false) basé sur la liste. Mais après cela, toute la case à cocher affiche comme cochée, bien que dans le débogage il montre clairement que les vérifiés sont utilisés 'vrai' et d'autres sont utilisés 'faux' avec setChecked().pourquoi le checkBox est vérifier quand setChecked (faux) est appelé
N'importe qui a connu la même chose, ou sait pourquoi setChecked() sur l'instance checkBox individuelle ne fait pas ce qu'on appelle?
itemList = [A, B, C, D, E]
checkedListSet = [A, B]
void insertOneRow(ViewGroup container, Item item) {
LayoutInflater inflater = (LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View itemLayout = inflater.inflate(R.layout.item_row, null, false);
TextView txt = (TextView)itemLayout.findViewById(R.id.text);
txt.setText(item.toString());
container.addView(itemLayout, container.getChildCount());
CheckBox checkbox = (CheckBox)itemLayout.findViewById(R.id.checkbox);
if (checkbox != null) {
boolean isChecked = (checkedListSet.get(item) != null);
Log.i(“insertOneRow(), isChecked:"+ isChecked +", item:”+item);
checkbox.setChecked(isChecked); //<== trace shows only A and B are set with true
}
}
item_row.xml
<LinearLayout
android:layout_width="match_parent"
android:layout_height="36dp"
android:orientation="horizontal"
>
<CheckBox
android:id="@+id/checkbox"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:checked="false" />
<TextView
android:id="@+id/text"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
/>
</LinearLayout>
Quel est le type de 'checkedListSet' objet? Je pense que la méthode get sur une liste n'accepte qu'un int en tant qu'index. –
checkedList est juste une liste contient l'élément vérifié, pourrait être- ListArray ou HashSet
- , le checkedListSet.get (point)! = Null est Je veux juste dire que si l'élément existe dans la checklist alors le checkBox doit définir vrai. –
lannyf