2016-04-19 18 views
1

Stellen Sie sich eine CardView mit einer Schaltfläche und einem Textfeld vor. Wenn ich auf eine Schaltfläche drücke, sollte sich der Text im Textfeld ändern. Code für meine recyclerView ist unten angegeben, wo ich den Text und einen Hörer für eine Taste am Einstellung:Ändern von Text in TextView in CardView von selbst

@Override 
    public void onBindViewHolder(CategoriesDetailedViewHolder holder, int position) { 

     final CategoryDetailedModel model = categoriesDetailedModels.get(position); 
     holder.description.setText(model.getQuestion()); 

     holder.btnPlus.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       holder.description.setText("some text"); 
      } 
     }); 
    } 

Das Hauptproblem ist mit dem String:

holder.description.setText("some text"); 

Es ist nicht von einem inneren zugegriffen werden kann Klasse. Hat jemand eine Idee, wie man Text in der Kartenansicht von selbst ändert.

aktualisieren 1

public class CategoriesDetailedViewHolder extends RecyclerView.ViewHolder{ 
     CardView cv; 
     TextView description; 
     TextView positiveCounter; 
     TextView negativeCounter; 
     TextView btnPlus; 
     View negativeCounterWrapper; 
     View positiveCounterWrapper; 
     CategoriesDetailedViewHolder(View itemView) { 
      super(itemView); 
      cv = (CardView)itemView.findViewById(R.id.cv); 
      description = (TextView)itemView.findViewById(R.id.main_text); 
      positiveCounter = (TextView)itemView.findViewById(R.id.tv_positive_count_in_circle); 
      negativeCounter = (TextView)itemView.findViewById(R.id.tv_negative_count_in_circle); 
      btnPlus = (TextView)itemView.findViewById(R.id.plus_button); 

      positiveCounterWrapper = itemView.findViewById(R.id.positive_count_wrapper); 
      negativeCounterWrapper = itemView.findViewById(R.id.negative_count_wrapper); 
      cv.setPreventCornerOverlap(false); 
     } 
    } 

    @Override 
    public CategoriesDetailedViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.categories_detailed_list_row_view, parent, false); 
     CategoriesDetailedViewHolder pvh = new CategoriesDetailedViewHolder(v); 
     context = parent.getContext(); 
     return pvh; 
    } 
+0

Wie können Sie nicht den Namen ändern, wenn die onBind gibt es für Sie Daten aus der Sicht zu manipulieren mit dem Adapter? –

+0

@ AntónioPaulo biete mir wie kann ich Adapter von selbst aktualisieren, weil ich nicht weiß .. – neustart47

+0

Bitte fügen Sie den Code für Ihren ViewHolder. Danke – Ahmed

Antwort

2

statt,

TextView description; 

Machen Sie es sich,

public TextView description; 

EDIT: Ändern Sie den folgenden

@Override 
    public void onBindViewHolder(CategoriesDetailedViewHolder holder, int position) { ... } 

zu,

@Override 
    public void onBindViewHolder(final CategoriesDetailedViewHolder holder, int position) { .... } 
+0

Problem in "Halter" -Wert, nicht in TextView-Wert. Schauen Sie sich diese https://snag.gy/QLEbXS – neustart47

+0

Machen Sie Ihren Halter endgültig – Ahmed

+0

danke, es funktioniert – neustart47

1

ich diesen Code verwenden und es funktioniert gut, man muss nur onBind Methode verwenden. Dies ist ein Beispiel, verwende ich in meinem Projekt und Sie können es einfach an Ihren Bedürfnissen anpassen ändern:

public void onBindViewHolder(final TipsViewHolder TipsViewHolder, final int i) { 

     TipsViewHolder.cardText.setText("Old text"); 

     TipsViewHolder.txtBtn.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 

       TipsViewHolder.cardText.setText("New Text"); 

      } 
     }); 
} 
Verwandte Themen