java - How to move between the elements of recyclerview inside its adapters -
i couldn't phrase question problem, want achieve this:-
i have recyclerview of items contains textview example, when item clicked; custom dialog show containing same content of clicked element.
so far good, in same dialog there's 2 arrow (left & right) @ each of sides, arrows buttons should navigate between recyclerview items , update content according new position.
here's did:
@override public void onbindviewholder(final viewholder holder, final int position) { holder.tvtitle.settext(data.get(position).gettitle()); holder.itemview.setonclicklistener(new onclicklistener() { @override public void onclick(view view) { //initializing custom dailog final dialog dialog = new dialog(context); dialog.requestwindowfeature(window.feature_no_title); dialog.getwindow() .setbackgrounddrawable(new colordrawable(android.graphics.color.transparent)); dialog.getwindow().getattributes().gravity = gravity.top; dialog.setcontentview(r.layout.dailog); dialog.show(); imageview rightarrow = (imageview) dialog.findviewbyid(r.id.dia_right_arrow); imageview leftarrow = (imageview) dialog.findviewbyid(r.id.dia_left_arrow); final textview textviewtitle = (textview) dialog.findviewbyid(r.id.dia_tvttile); textviewtitle.settext(data.get(position).gettitle()); rightarrow.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { int curposi = 0; if (data.size() != 0) { curposi = position+1; } textviewtitle.settext(data.get(position).gettitle()); } }); leftarrow.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { int curposi = 0; if (data.size() != 0) { curposi = position-1; } textviewtitle.settext(data.get(position).gettitle()); } }); }}); }
the result:
when click on right arrow works 100% , but if click again nothing happens !!
and if click left arrow @ anytime gives crash exception:
java.lang.arrayindexoutofboundsexception: length=10; index=-1
is possible achieve loop effect, mean when reach last index , click again shows first index , vice versa..!
any help?
it seems issue how check click limits. can try this
add curposi class member variable
private int curposi; @override public void onbindviewholder(final viewholder holder, final int position) { holder.tvtitle.settext(data.get(position).gettitle()); holder.itemview.setonclicklistener(new onclicklistener() { @override public void onclick(view view) { curposi = position //initializing custom dailog final dialog dialog = new dialog(context); dialog.requestwindowfeature(window.feature_no_title); dialog.getwindow() .setbackgrounddrawable(new colordrawable(android.graphics.color.transparent)); dialog.getwindow().getattributes().gravity = gravity.top; dialog.setcontentview(r.layout.dailog); dialog.show(); imageview rightarrow = (imageview) dialog.findviewbyid(r.id.dia_right_arrow); imageview leftarrow = (imageview) dialog.findviewbyid(r.id.dia_left_arrow); final textview textviewtitle = (textview) dialog.findviewbyid(r.id.dia_tvttile); textviewtitle.settext(data.get(position).gettitle()); rightarrow.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { int lastindex = data.size()-1; if (lastindex == curposi ) { // prevents crash, if next button clicked while last index showing reset , show first one..! curposi = 0; } else if(curposi < data.size()) { curposi++; } textviewtitle.settext(data.get(curposi).gettitle()); } }); leftarrow.setonclicklistener(new view.onclicklistener() { @override public void onclick(view v) { //same thing here "if", when previous button clicked first; show last item..! if (curposi == 0) { curposi = data.size(); } if (curposi > 0) { curposi--; } textviewtitle.settext(data.get(curposi).gettitle()); } }); }}); }
Comments
Post a Comment