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
Post a Comment