Java – How do I call scrollToPosition(position) in the recyclerView adapter?

How do I call scrollToPosition(position) in the recyclerView adapter?… here is a solution to the problem.

How do I call scrollToPosition(position) in the recyclerView adapter?

I have a setOnClick listener in my onBindViewHolder

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
       ((ViewHolder) holder).txtType.setText(object.text);
       ((ViewHolder) holder).checkBox.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) { 
                        Toast.makeText(mContext, ""+position, Toast.LENGTH_SHORT).show();                           
                      //???. scrolltoPosition(position+1);
                    }
                });

When I click, I scroll the viewport to the next Recycler View item. I use recyclerView.scrollToPosition(position); Done this in my MainActivity java. But in the adapter class on onBindViewHolder, I don’t know how to call my recyclerView on the main Java class.

What should I do?

Edit:
For simplification, I modified the previous code because I used a multi-View adapter for my recycler. This is the MultiView adapter:

public class MultiViewTypeAdapter extends RecyclerView.Adapter {

private ArrayList<InstructionModel>dataSet;
Context mContext;
int total_types;
private LinearLayoutManager manager;

public MultiViewTypeAdapter(LinearLayoutManager manager)
{
    this.manager=manager;
}

public static class SimpleTextViewHolder extends RecyclerView.ViewHolder {

TextView txtType;
    CardView cardView;
    CheckBox checkBox;

public SimpleTextViewHolder(View itemView) {
        super(itemView);

this.txtType = (TextView) itemView.findViewById(R.id.type);
        this.cardView = (CardView) itemView.findViewById(R.id.card_view);
        this.checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);

}
}
public static class TimeTextViewHolder extends RecyclerView.ViewHolder {

TextView txtType;
    CardView cardView;
    CheckBox checkBox;

public TimeTextViewHolder(View itemView) {
        super(itemView);

this.txtType = (TextView) itemView.findViewById(R.id.type);
        this.cardView = (CardView) itemView.findViewById(R.id.card_view);
        this.checkBox = (CheckBox) itemView.findViewById(R.id.checkBox);
    }
}

public MultiViewTypeAdapter(ArrayList<InstructionModel> data, Context context) {
    this.dataSet = data;
    this.mContext = context;
    total_types = dataSet.size();
}

@Override
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

View view;
    switch (viewType) {
        case InstructionModel.SIMPLE_TYPE:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.simple, parent, false);
            return new SimpleTextViewHolder(view);
        case InstructionModel.TIME_TYPE:
            view = LayoutInflater.from(parent.getContext()).inflate(R.layout.time, parent, false);
            return new TimeTextViewHolder(view);
    }
    return null;
}

@Override
public int getItemViewType(int position) {

switch (dataSet.get(position).type) {
        case 0:
            return InstructionModel.SIMPLE_TYPE;
        case 1:
            return InstructionModel.TIME_TYPE;
        default:    return -1;
    }
}

@Override
public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int listPosition) {

InstructionModel object = dataSet.get(listPosition);
    if (object != null) {
        switch (object.type) {

case InstructionModel.SIMPLE_TYPE:

((SimpleTextViewHolder) holder).txtType.setText(object.text);
                break;
            case InstructionModel.TIME_TYPE:
                ((TimeTextViewHolder) holder).txtType.setText(object.text);

break;
        }
    }

}

@Override
public int getItemCount() {
    return dataSet.size();
}

Postscript.
If you see something random and useless, I’m trying something.

Solution

Use the constructor to pass the LayoutManager

  class Adapter extends RecyclerView.Adapter<Adapter.ViewHolder> {
            private LinearLayoutManager manager;

public Adapter(LinearLayoutManager manager)
            {
                this.manager=manager;
            }

@Override
        public void onBindViewHolder(final RecyclerView.ViewHolder holder, final int position) {
           ((ViewHolder) holder).txtType.setText(object.text);
           ((ViewHolder) holder).checkBox.setOnClickListener(new View.OnClickListener() {
                        @Override
                        public void onClick(View v) { 
                            Toast.makeText(mContext, ""+position, Toast.LENGTH_SHORT).show();                           
                          manager.scrollToPosition(position+1);
                        }
                    });
    }

Related Problems and Solutions