Je souhaite actualiser un seul paramètre de l'élément de liste où l'élément de liste contient des dispositions pour augmenter ou diminuer la valeur et le curseur. Lorsque je sélectionne la valeur de spinner et que j'augmente et que j'actualise l'élément en notifiant datachange(), la valeur de spinner passe par défaut chaque fois que j'augmente ou diminue. Comment faire pour résoudre ce problème?Actualiser un seul paramètre de l'élément de liste dans recycleur item contient incrément + décroissement + spinner
0
A
Répondre
0
finalement obtenu la solution. Je prends juste un booléen isFirstTimeInflate = true; dans l'adaptateur lors de la première fois gonfler toutes les vues. lorsque la position de l'article == list.size(); make isFirstTimeInflate = false;
@Override
public void onBindViewHolder(final CardViewHolder holder, final int position) {
final Category category = categories.get(position);
holder.plus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post(new ActionEvent(category, position, true, false));
}
});
holder.minus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
EventBus.getDefault().post(new ActionEvent(category, position, false, true));
}
});
if (isFirstTimeInflate) {
value.setAdapter(new SpinnerAdapter(context, R.layout.points_spinner_row, category.getAvailableCards()));
value.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
category.setValue(category.getAvailableCards().get(position));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
count.setText(category.getCount() + "");
if (position == categories.size()-1) {
isFirstTimeInflate = false;
}
}