2016-05-30 1 views
0

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

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; 
     } 
    }