how to scroll to next item by clicking on a checkbox in each item (recyclerview)
Asked Answered
F

1

5

Forgive me for my English.

My list contains 100 items. Each item consists of two checkboxes and I want to scroll to the next item each time a checkbox is clicked.

please give me the best answer link If this question has already been answered

this is my custom adapter

 public class CustomAdapter extends 
       RecyclerView.Adapter<CustomAdapter.MyViewHolder> {

private ArrayList answerFirst;
private ArrayList answerSecond;
private Context context;

public CustomAdapter(Context  context, ArrayList questionList, ArrayList 
answerFirst, ArrayList answerSecond) {
    this.context = context;
    this.answerFirst = answerFirst;
    this.answerSecond = answerSecond;
}

@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View v = 
    LayoutInflater.from(parent.getContext()).inflate(R.layout.test_items, 
    parent, false);
    return new MyViewHolder(v);
}

@Override
public void onBindViewHolder(final MyViewHolder holder, final int position) 
    {

        holder.firstanswer.setText(answerFirst.get(position).toString());
        holder.secondanswer.setText(answerSecond.get(position).toString());
    }

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

public class MyViewHolder extends RecyclerView.ViewHolder {
    TextView question;
    CheckBox firstanswer;
    CheckBox secondanswer;
    public MyViewHolder(View itemView) {
        super(itemView);
        question = (TextView) itemView.findViewById(R.id.question_text);
        firstanswer = (CheckBox) itemView.findViewById(R.id.first_answer);
        secondanswer = (CheckBox) itemView.findViewById(R.id.second_answer);
             }
        }
   }

this is the main activity

 @Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_start_test);

    final RecyclerView recyclerView = (RecyclerView) 
    findViewById(R.id.recyclerView_test);
    final LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getApplicationContext());
    recyclerView.setLayoutManager(linearLayoutManager); 

    final CustomAdapter customAdapter = new CustomAdapter(mainActivity.this, answerFirst,answerSecond);
    recyclerView.setAdapter(customAdapter);
}
Flaunch answered 23/10, 2017 at 1:45 Comment(2)
Why are you using getApplicationContext()? Don’t use that, there’s a difference between the types of Contexts. Using the application context could cause a memory leak because the application context will stay around longer that anything else and could possibly make your Activity unable to be destroyed, thus causing memory issues.Overplus
@Overplus thank you for your adviceFlaunch
R
7

You can do that by making the adaptor class inside the main class and in the listener method of checkbox scroll to the required position as the RecyclerView is a global variable you can access it and scroll to required position.

rv.scrollToPosition(youPositionInTheAdapter)

else pass the instance of RecyclerView in the constructor and do the same

and to get the current item position inside the adaptor by getAdapterPosition()

or you can do it with layout manager like this

rv.getLayoutManager().scrollToPosition(youPositionInTheAdapter)
Roughrider answered 23/10, 2017 at 4:43 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.