vicky kumar
vicky kumar

Reputation: 3

How to open a particular tab of viewpager when i click on recyclerview button

i have three viewpager tab namely question,article and video.i want to go on tabs page and load some data on question tab

@Override
public void onBindViewHolder(final RecyclerViewHolder holder, int position) {
    i=position;
    String url="https://d1v0zurmr84n8z.cloudfront.net/";
    String value=notificationList.get(position).getIs_pic();
    holder.name.setText("Raised by:"+notificationList.get(position).getGenerated_by_name());
    holder.type.setText("Type:"+notificationList.get(position).getNotification_type());
    holder.date.setText("Date:"+notificationList.get(position).getTime());
    holder.visit.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            String classId=notificationList.get(i).getClass_id();
            getRetrofit(classId);
/*----i have tried this but this is showing error....R.id.content_classroom is not a vlaid argument
            QuestionFragment qf=new QuestionFragment();
            FragmentManager fm = ((Home)context).getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(R.id.content_classroom, qf);
            ft.commit();
*/}
    });

these are the fragments loaded in tabs

public void setupViewPager(ViewPager viewPager) {
    MyPagerAdapter adapter = new MyPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new QuestionFragment(), FRAGMENT_NAME[0]);
    adapter.addFragment(new ArticleFragment(), FRAGMENT_NAME[1]);
    adapter.addFragment(new VideoFragment(), FRAGMENT_NAME[2]);
    //Set adapter to ViewPager
    viewPager.setAdapter(adapter);
}

Upvotes: 0

Views: 1319

Answers (1)

Paresh
Paresh

Reputation: 6857

create method in your fragment

public void selectTab(int position) {
    mViewPager.setCurrentItem(position);
}

Call this method to select tab.
For question - position 0,article - position 1 and video - position 2

---- Way to call method from recyclerView----
Make your adapter class abstract

public abstract class CartAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> {

    // constructor ..
    // Other recyclerView methods

    // You ViewHolder class
    public class CartHolder extends RecyclerView.ViewHolder {

        Button mButton;

        CartHolder(View itemView) {
            super(itemView);
            mButton = (Button) itemView.findViewById(R.id.referece_of_view);
            mButton.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    OnButtonClicked();
                }
            });
        }
    }

    protected abstract void OnButtonClicked();
}

While initializing your adapter,

mAdapter = new CartAdapter(context, mDataSet) {
            @Override
            protected void OnButtonClicked() {
                // Call method selectTab()
            }
};

Upvotes: 3

Related Questions