0

영어로 저를 용서해주십시오.각 항목 (recyclerview)의 체크 박스를 클릭하여 다음 항목으로 스크롤하는 방법

내 목록에는 100 개의 항목이 있습니다. 각 항목은 두 개의 확인란으로 구성되어 있으며 확인란을 클릭 할 때마다 다음 항목으로 스크롤하고 싶습니다.

이 질문에 이미 이것이 당신이 할 수있는 주요 활동

@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); 
} 
+0

왜 'getApplicationContext()'를 사용하고 있습니까? 그것을 사용하지 마십시오. 컨텍스트 유형에 차이가 있습니다. 응용 프로그램 컨텍스트를 사용하면 메모리 누수가 발생할 수 있습니다. 그 이유는 응용 프로그램 컨텍스트가 다른 어떤 것보다 오래 머무르고 '활동'을 파괴 할 수 없으므로 메모리 문제가 발생할 수 있기 때문입니다. – Sakiboy

+0

@Sakiboy 귀하의 조언을 부탁드립니다 – moslem

답변

1

내 사용자 정의 어댑터

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); 
      } 
     } 
    } 

입니다

대답 한 경우 나에게 가장 좋은 대답 링크를 제공하십시오 main 클래스 내부의 어댑터 클래스를 만들고 checkbox의 listener 메소드를 RecyclerView가 전역 변수 인 것처럼 필요한 위치로 스크롤하여 액세스 할 수 있습니다 필요한 위치로 스크롤하십시오. 다른

rv.scrollToPosition(youPositionInTheAdapter) 

생성자에서 RecyclerView의 인스턴스를 통과하고 같은

을하고 getAdapterPosition()

하여 어댑터 내부의 현재 항목의 위치를 ​​얻기 위해 또는이 같은 레이아웃 매니저와 함께 할 수 있습니다

rv.getLayoutManager().scrollToPosition(youPositionInTheAdapter) 
+0

감사합니다 sagar – moslem