java - how to refresh view of previous item row view of recycle view -
hello guys hope fine. i'm developing android app play different sounds of animals.
i'm using recycle view can see in screenshot below. i'm facing problem, have play button inside row playing sound of animal whenever play sound item 0 or position shows me pause option inside view. whenever click on next item 1 or other it's not changing image of previous item 0.
i'm doing refreshing list of adapter using following code.! think not practice.!
t1.recyclerview.setadapter(null); t1.customadapter=new customadapter(t1.animallist,ctx); t1.recyclerview.setadapter(t1.customadapter);
i tried using every thing notifyitemchanged(oldposition)
still havent got desired result.!
kindly suggest me appropriate way solve this? i'm new android , have 1 thought in mind view of last item , save first view , set default image play on previous list button don't know how this?
here code of custom adapter.!
public class customadapter extends recyclerview.adapter<customadapter.myviewholder> { private list<animal> animallist; public context ctx; public static int postionchange=-1; public static tab1birds t1; final int[] countlike = {0}; //public static mediaplayer mediaplayer2 = new mediaplayer(); int pos=0; public class myviewholder extends recyclerview.viewholder { public imageview display; public textview nametextview; public imagebutton play,options,menubtn; public myviewholder(view view) { super(view); nametextview = (textview) view.findviewbyid(r.id.nametextview); play=(imagebutton)view.findviewbyid(r.id.playbtn); options=(imagebutton)view.findviewbyid(r.id.menubtn); display=(imageview)view.findviewbyid(r.id.imageview); menubtn = (imagebutton) view.findviewbyid(r.id.menubtn); //mediaplayerclass.mediaplayer= new mediaplayer(); } } public customadapter(list<animal> movieslist,context ct) { this.animallist = movieslist; this.ctx=ct; } @override public myviewholder oncreateviewholder(viewgroup parent, int viewtype) { view itemview = layoutinflater.from(parent.getcontext()) .inflate(r.layout.row_list, parent, false); return new myviewholder(itemview); } @override public void onbindviewholder(final myviewholder holder, final int position) { final animal animal = animallist.get(position); final int[] previous = {position}; holder.nametextview.settext(animal.getname()); holder.display.setimageresource(animal.getimageresource()); ////////////////////////////////////////////////////////////////////////////////////////////////////////// holder.options.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { try { if (mediaplayerclass.mediaplayer.isplaying()) { holder.play.setbackgroundresource(r.drawable.play_btn); mediaplayerclass.mediaplayer.stop(); } } catch (exception ex) { } dialog dialog; final string[] items = {"set ring tune", "set message tune", "set alarm tune"}; final arraylist itemsselected = new arraylist(); final alertdialog.builder builder = new alertdialog.builder(ctx); builder.settitle("options"); builder.setmultichoiceitems(items, null, new dialoginterface.onmultichoiceclicklistener() { @override public void onclick(dialoginterface dialog, int selecteditemid, boolean isselected) { if (isselected) { itemsselected.add(selecteditemid); } else if (itemsselected.contains(selecteditemid)) { itemsselected.remove(integer.valueof(selecteditemid)); } } }) .setpositivebutton("done!", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int id) { toast toast = toast.maketext(ctx, "successfully selected", toast.length_short); toast.show(); sparsebooleanarray checked = ((alertdialog) dialog).getlistview().getcheckeditempositions(); string str = ""; if (checked.get(0)) { savering(animal.getsoundresource()); } if (checked.get(1)) { savemsg(animal.getsoundresource()); } if (checked.get(2)) { savealarm(animal.getsoundresource()); } // if (checked.get(3)) { // databasehelper.save_bookmarks(itemslist.get(position).getitemname(), r.drawable.play_btn, itemslist.get(position).getitemtunest()); // toast.maketext(ctx, "item added favourites", toast.length_short).show(); // } } }) .setnegativebutton("cancel", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int id) { } }); dialog = builder.create(); dialog.show(); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } }); pos=position; // animation // /////////////////////////// //animate(holder);//function animation ////////////////////////////// holder.play.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { if(postionchange==-1) { postionchange=position; } if(postionchange!=position) { holder.play.setbackgroundresource(r.drawable.play_btn); } holder.play.setbackgroundresource(r.drawable.pause_btn);// present state mediaplayerclass.play(animal.getsoundresource(),ctx); if(countlike[0] ==0) { countlike[0] =1; }else if(countlike[0] ==1) { //if playing pause if(mediaplayerclass.mediaplayer.isplaying()) mediaplayerclass.mediaplayer.stop(); t1.recyclerview.setadapter(null); t1.customadapter=new customadapter(t1.animallist,ctx); t1.recyclerview.setadapter(t1.customadapter); holder.play.setbackgroundresource(r.drawable.play_btn); //sound stop show play button countlike[0] =2; } if(countlike[0] >1) { countlike[0] =0; holder.play.setbackgroundresource(r.drawable.play_btn); // click play music, click again stop music } //setoncompletionlistener mediaplayerclass.mediaplayer.setoncompletionlistener(new mediaplayer.oncompletionlistener() { @override public void oncompletion(mediaplayer mediaplayer) { holder.play.setbackgroundresource(r.drawable.play_btn); } }); // mediaplayerclass.mediaplayer.start(); } }); } @override public int getitemcount() { return animallist.size(); } //animation public void animate(recyclerview.viewholder viewholder) { final animation animanticipateovershoot = animationutils.loadanimation(ctx, r.anim.bounce_interpolator); viewholder.itemview.setanimation(animanticipateovershoot); } ////////////////////////////////////////////////////////////////////////////////////////// }
here example of music player in samsung mobiles.! when ever play music shows animation , when play next song play song , stops previous playing music , animation.! know how stop media player how change stop animation or music library etc.?
bellow sample works normal list data recyclerview.
- first need save clicked position have apply notifydatasetchanged().
after when list refreshing check saved position actual bind position apply changes need.
public void onbindviewholder(final myviewholder holder, final int position) {
holder.tvgroupname.settext(list.get(position).getgroupname()); holder.itemview.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { // save position in item click refresh list pos = position; notifydatasetchanged(); } }); // once items started refreshing check save position actual position change text if (pos == position) { holder.tvgroupname.settext("testing"); } }
hope sample helpful..
and,
i modified class check , hope work..
public class customadapter extends recyclerview.adapter<customadapter.myviewholder> { private list<animal> animallist; public context ctx; public static int postionchange=-1; public static tab1birds t1; final int[] countlike = {0}; //public static mediaplayer mediaplayer2 = new mediaplayer(); int pos; public class myviewholder extends recyclerview.viewholder { public imageview display; public textview nametextview; public imagebutton play,options,menubtn; public myviewholder(view view) { super(view); nametextview = (textview) view.findviewbyid(r.id.nametextview); play=(imagebutton)view.findviewbyid(r.id.playbtn); options=(imagebutton)view.findviewbyid(r.id.menubtn); display=(imageview)view.findviewbyid(r.id.imageview); menubtn = (imagebutton) view.findviewbyid(r.id.menubtn); //mediaplayerclass.mediaplayer= new mediaplayer(); } } public customadapter(list<animal> movieslist,context ct) { this.animallist = movieslist; this.ctx=ct; } @override public myviewholder oncreateviewholder(viewgroup parent, int viewtype) { view itemview = layoutinflater.from(parent.getcontext()) .inflate(r.layout.row_list, parent, false); return new myviewholder(itemview); } @override public void onbindviewholder(final myviewholder holder, final int position) { final animal animal = animallist.get(position); final int[] previous = {position}; holder.nametextview.settext(animal.getname()); holder.display.setimageresource(animal.getimageresource()); ////////////////////////////////////////////////////////////////////////////////////////////////////////// holder.options.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { try { if (mediaplayerclass.mediaplayer.isplaying()) { holder.play.setbackgroundresource(r.drawable.play_btn); mediaplayerclass.mediaplayer.stop(); } } catch (exception ex) { } dialog dialog; final string[] items = {"set ring tune", "set message tune", "set alarm tune"}; final arraylist itemsselected = new arraylist(); final alertdialog.builder builder = new alertdialog.builder(ctx); builder.settitle("options"); builder.setmultichoiceitems(items, null, new dialoginterface.onmultichoiceclicklistener() { @override public void onclick(dialoginterface dialog, int selecteditemid, boolean isselected) { if (isselected) { itemsselected.add(selecteditemid); } else if (itemsselected.contains(selecteditemid)) { itemsselected.remove(integer.valueof(selecteditemid)); } } }) .setpositivebutton("done!", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int id) { toast toast = toast.maketext(ctx, "successfully selected", toast.length_short); toast.show(); sparsebooleanarray checked = ((alertdialog) dialog).getlistview().getcheckeditempositions(); string str = ""; if (checked.get(0)) { savering(animal.getsoundresource()); } if (checked.get(1)) { savemsg(animal.getsoundresource()); } if (checked.get(2)) { savealarm(animal.getsoundresource()); } // if (checked.get(3)) { // databasehelper.save_bookmarks(itemslist.get(position).getitemname(), r.drawable.play_btn, itemslist.get(position).getitemtunest()); // toast.maketext(ctx, "item added favourites", toast.length_short).show(); // } } }) .setnegativebutton("cancel", new dialoginterface.onclicklistener() { @override public void onclick(dialoginterface dialog, int id) { } }); dialog = builder.create(); dialog.show(); /////////////////////////////////////////////////////////////////////////////////////////////////////////////////// } }); // animation // /////////////////////////// //animate(holder);//function animation ////////////////////////////// holder.play.setonclicklistener(new view.onclicklistener() { @override public void onclick(view view) { pos=position; notifydatasetchanged(); } }); if (pos == position){ holder.play.setbackgroundresource(r.drawable.pause_btn);// present state mediaplayerclass.play(animal.getsoundresource(),ctx); if(countlike[0] ==0) { countlike[0] =1; }else if(countlike[0] ==1) { //if playing pause if(mediaplayerclass.mediaplayer.isplaying()) mediaplayerclass.mediaplayer.stop(); t1.recyclerview.setadapter(null); t1.customadapter=new customadapter(t1.animallist,ctx); t1.recyclerview.setadapter(t1.customadapter); holder.play.setbackgroundresource(r.drawable.play_btn); //sound stop show play button countlike[0] =2; } if(countlike[0] >1) { countlike[0] =0; holder.play.setbackgroundresource(r.drawable.play_btn); // click play music, click again stop music } //setoncompletionlistener mediaplayerclass.mediaplayer.setoncompletionlistener(new mediaplayer.oncompletionlistener() { @override public void oncompletion(mediaplayer mediaplayer) { holder.play.setbackgroundresource(r.drawable.play_btn); } }); // mediaplayerclass.mediaplayer.start(); }else { holder.play.setbackgroundresource(r.drawable.play_btn); } } @override public int getitemcount() { return animallist.size(); } //animation public void animate(recyclerview.viewholder viewholder) { final animation animanticipateovershoot = animationutils.loadanimation(ctx, r.anim.bounce_interpolator); viewholder.itemview.setanimation(animanticipateovershoot); } }
@rajesh
Comments
Post a Comment