I have searched for various answers on StackOverflow but not able to find something near to this. I know how to refresh fragment but i dont know how to refresh fragment which is actualy in tab layout.I have an activity and i have implemented tablayout with viewpager. And i have recyclerview in one of the fragment of tablayout. And in that recycler view i have a button that reloads the page. But the problem is i reload the complete activity and i see the first tab.While the recyclerview fragment is in second tab. So how do i reload the fragment from the recyclerview and dont let complete activity refresh. If i refresh complete activity then again first layout will be visible on front screen and user wil have to swipe to second tab again, which is not preferable. Heres my code of recylerview adapter of fragment of second tab:
public class Recieved_Reviews_adapter extends RecyclerView.Adapter<Recieved_Reviews_adapter.ViewHolder>
{
Context context;
ArrayList<reviews_model> arraylist_reviews_models;
public Recieved_Reviews_adapter(Context context, ArrayList<reviews_model> reviews_models) {
this.context=context;
this.arraylist_reviews_models = reviews_models;
}
@Override
public Recieved_Reviews_adapter.ViewHolder onCreateViewHolder(ViewGroup viewGroup, int i) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.cardview__recieved_reviews, viewGroup, false);
return new ViewHolder(view);
}
@Override
public void onBindViewHolder(final Recieved_Reviews_adapter.ViewHolder viewHolder, int i) {
viewHolder.imageView.setImageResource(arraylist_reviews_models.get(i).getReview_images());
viewHolder.reviewers_name.setText(" "+ arraylist_reviews_models.get(i).getReviewer_name());
viewHolder.reviews.setText("\" "+ arraylist_reviews_models.get(i).getReviews()+"\"");
viewHolder.reviews_ratingbar.setRating(arraylist_reviews_models.get(i).getReviews_rating());
viewHolder.img_btn_reply.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
viewHolder.img_btn_reply.setVisibility(View.GONE);
EditText et_reply= new EditText(context);
et_reply.setHint("Reply");
Button btn_sumbit= new Button(context);
btn_sumbit.setText("Submit");
btn_sumbit.setGravity(Gravity.CENTER);
btn_sumbit.setBackgroundColor(context.getResources().getColor(R.color.colorPrimary));
btn_sumbit.setTextColor(context.getResources().getColor(R.color.TextColorWhite));
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(120, 40);
params.setMargins(20, 20, 20, 20);
params.gravity=Gravity.CENTER;
btn_sumbit.setLayoutParams(params);
et_reply.setGravity(Gravity.CENTER);
viewHolder.linearLayout_received_reviews.addView(et_reply,viewHolder.linearLayout_received_reviews.getChildCount());
viewHolder.linearLayout_received_reviews.addView(btn_sumbit);
btn_sumbit.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
//Refreshing base activity rather
((Reviews)context).finish();
context.startActivity(((Reviews)context).getIntent());
});
}
@Override
public int getItemCount() {
return arraylist_reviews_models.size();
}
public class ViewHolder extends RecyclerView.ViewHolder {
CircleImageView imageView;
RatingBar reviews_ratingbar;
TextView reviewers_name;
TextView reviews;
LinearLayout linearLayout_received_reviews;
ImageButton img_btn_reply;
Button submit;
public ViewHolder(View view) {
super(view);
imageView=(CircleImageView) view.findViewById(R.id.img_review);
imageView.setBorderColor(context.getResources().getColor(R.color.darkgrey));
reviews_ratingbar=(RatingBar)view.findViewById(R.id.ratingbar_reviews);
reviewers_name=(TextView)view.findViewById(R.id.tv_reviewer_name);
reviews=(TextView) view.findViewById(R.id.tv_the_reviews);
img_btn_reply =(ImageButton)view.findViewById(R.id.img_btn_received_review_reply);
linearLayout_received_reviews=(LinearLayout)view.findViewById(R.id.linear_layout_recieved_reviews);
}
}
}
And heres my activity code:
public class Reviews extends AppCompatActivity {
ViewPager simpleViewPager;
TabLayout tabLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_reviews);
init();
listener();
}
private void init() {
//this method initializes all the views
simpleViewPager = (ViewPager) findViewById(R.id.simpleViewPager);
tabLayout = (TabLayout) findViewById(R.id.simpleTabLayout);
TabLayout.Tab firstTab = tabLayout.newTab();
firstTab.setText("Given");
TabLayout.Tab secondTab = tabLayout.newTab();
secondTab.setText("Recieved");
tabLayout.addTab(firstTab);
tabLayout.addTab(secondTab);
tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);
PagerAdapter adapter = new PagerAdapter(getSupportFragmentManager(), tabLayout.getTabCount());
simpleViewPager.setAdapter(adapter);
simpleViewPager.addOnPageChangeListener(new TabLayout.TabLayoutOnPageChangeListener(tabLayout));
}
private void listener() {
//this method sets onclick on tab
tabLayout.addOnTabSelectedListener(new TabLayout.ViewPagerOnTabSelectedListener(simpleViewPager));
}
And heres my pageradapter of viewpager/tablayout:
public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Given_reviews tab1 = new Given_reviews();
return tab1;
case 1:
Received_reviews tab2 = new Received_reviews();
return tab2;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
Given_reviews tab1 = new Given_reviews();
return tab1;
case 1:
Received_reviews tab2 = new Received_reviews();
return tab2;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}