java - RecyclerView actions only edit only work on first position? -


so in recyclerview item allow user switch between eddittext , textview. works item in first position of recycler view, in second position switch ti edit text not switch textview. delete option works on positions however. here recyclerview adater

package com.intellidev.mobitranscribe;  import android.content.dialoginterface; import android.support.v7.app.alertdialog; import android.support.v7.app.appcompatactivity; import android.support.v7.widget.recyclerview; import android.util.log; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.edittext; import android.widget.textview; import android.widget.viewswitcher;  import java.util.arraylist;   public class noteitemadapter extends recyclerview.adapter<noteitemholder> { private arraylist<noteitem> noteitems;     private string[] mnoteitemarray;      private appcompatactivity context;     public noteitemadapter(arraylist<noteitem> noteitemarraylist, appcompatactivity context) {         this.noteitems = noteitemarraylist;         this.context = context;     }     @override     public noteitemholder oncreateviewholder(viewgroup parent, int viewtype) {         return new noteitemholder(layoutinflater.from(parent.getcontext()).inflate(r.layout.note_item, parent, false));     }      @override     public void onbindviewholder(final noteitemholder holder, int position) {         final noteitem noteitem = this.noteitems.get(position);         holder.imagebutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 noteitemholder h = holder;                 showtextoptions(h, noteitem);             }         });         holder.textview.settext(noteitem.getmessage());         if (!holder.textviewspeaker.gettext().tostring().isempty()){             holder.textviewspeaker.settext(noteitem.getspeaker());         }       }      private void showtextoptions(final noteitemholder holder, final noteitem item) {         alertdialog.builder builder = new alertdialog.builder(context, r.style.mydialogtheme);         builder.setitems(r.array.notetextselectionitems, new dialoginterface.onclicklistener() {             @override             public void onclick(dialoginterface dialoginterface, int i) {                 log.e("tree","it "+i);                 if (i==0) {                      //reference picture                 }else if (i==1) {                      // reference webdocument or link                 } else if (i==2) {                     noteitemholder h = holder;                     switchviews(h, item);                 } else if (i==3) {                         //delete text                         int n = noteitems.indexof(item);                         noteitems.remove(n);                         notifydatasetchanged();                 }             }         }).show();     }      @override     public int getitemcount() {         return this.noteitems.size();     }      protected void switchviews(noteitemholder h, noteitem note) {         if (context.findviewbyid(r.id.noteitemtextview).getvisibility()==view.gone) {             //edittext edittext = (edittext) context.findviewbyid(r.id.noteitemedittext);             string x  = h.edittext.gettext().tostring();             h.edittext.setvisibility(view.gone);             //textview textview = (textview) context.findviewbyid(r.id.noteitemtextview);             h.textview.settext(x);             h.textview.setvisibility(view.visible);         } else {            // textview textview = (textview) context.findviewbyid(r.id.noteitemtextview);             string x  = h.textview.gettext().tostring();             h.textview.setvisibility(view.gone);             //edittext edittext = (edittext) context.findviewbyid(r.id.noteitemedittext);             h.edittext.settext(x);             h.edittext.setvisibility(view.visible);         }     } } 

i had change views this. reassigning noteitemholder thinking final variable couldnt manipulated. using final variable made work.

@override     public void onbindviewholder(final noteitemholder holder, int position) {         final noteitem noteitem = this.noteitems.get(position);         holder.imagebutton.setonclicklistener(new view.onclicklistener() {             @override             public void onclick(view view) {                 showtextoptions(holder, noteitem);             }         });         holder.textview.settext(noteitem.getmessage());         if (!holder.textviewspeaker.gettext().tostring().isempty()){             holder.textviewspeaker.settext(noteitem.getspeaker());         }       }      private void showtextoptions(final noteitemholder holder, final noteitem item) {         alertdialog.builder builder = new alertdialog.builder(context, r.style.mydialogtheme);         builder.setitems(r.array.notetextselectionitems, new dialoginterface.onclicklistener() {             @override             public void onclick(dialoginterface dialoginterface, int i) {                 log.e("tree","it "+i);                 if (i==0) {                      //reference picture                 }else if (i==1) {                      // reference webdocument or link                 } else if (i==2) {                     switchviews(holder, item);                 } else if (i==3) {                         //delete text                         int n = noteitems.indexof(item);                         noteitems.remove(n);                         notifydatasetchanged();                 }             }         }).show();     }      @override     public int getitemcount() {         return this.noteitems.size();     }      protected void switchviews(noteitemholder h, noteitem note) {         if (h.textview.getvisibility()==view.gone) {             //edittext edittext = (edittext) context.findviewbyid(r.id.noteitemedittext);             string x  = h.edittext.gettext().tostring();             h.edittext.setvisibility(view.gone);             //textview textview = (textview) context.findviewbyid(r.id.noteitemtextview);             h.textview.settext(x);             h.textview.setvisibility(view.visible);         } else {            // textview textview = (textview) context.findviewbyid(r.id.noteitemtextview);             string x  = h.textview.gettext().tostring();             h.textview.setvisibility(view.gone);             //edittext edittext = (edittext) context.findviewbyid(r.id.noteitemedittext);             h.edittext.settext(x);             h.edittext.setvisibility(view.visible);         }     } 

Comments

Popular posts from this blog

jOOQ update returning clause with Oracle -

java - Warning equals/hashCode on @Data annotation lombok with inheritance -

java - BasicPathUsageException: Cannot join to attribute of basic type -