원하는 결과RecyclerView는 : onclick을 사용자 정의 행
스크롤 위치를 유지하고 사용자 정의 행의 특정보기를 마우스 오른쪽 버튼으로 위치를 부여 특정보기의 잘못된 위치를 제공합니다.
목록 시작 부분과 끝 부분에 수요 데이터를 추가하려고하는 RecyclerView를 사용하고 있습니다.
Scrolling bottom을 통한 데이터 가져 오기가 완벽하게 작동합니다.
그러나 문제 다음과 같이 가진 스크롤 상단 : 어댑터의 onBindViewHolder에
- 설정을 클릭 리스너를.
- Recyclerview의 OnItemTouchListener에서 클릭 수신기를 설정합니다. 여기
경우입니다 :
나는 목록을 스크롤 한 후 15 개 데이터를로드 및 목록의 상단에 추가합니다. 우리의 의도는 스크롤 위치를 유지하는 것입니다. 는
adapter.notifyItemRangeInserted(0, stringArrayListTemp.size());
을 통해 달성하지만 스크롤없이 항목을 클릭하고있는 동안 문제이 될 수있는 다음보기의 OnClickListener를이 잘못된 위치을 제공합니다. 당신은 어댑터의 방법을 확인할 수 있습니다
@Override
public void onBindViewHolder(MyViewHolder holder, final int position) {
String item = moviesList.get(position);
holder.title.setText(item);
holder.title.setTag(position);
holder.title.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Log.e("onClick", "stringArrayList position: " + moviesList.get(position) + " - view position: " + moviesList.get((int) view.getTag()));
}
});
}
을하지만 Recyclerview의 addOnItemTouchListener에서 동시에 GetTag의를 사용하여 잘못된 위치를 stringArrayList.get(position)
와 함께 올바른 위치를 제공하지만 제공합니다.
mRecyclerView.addOnItemTouchListener(
new RecyclerItemClickListener(this, new RecyclerItemClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Log.e("onItemClick", "stringArrayList position: "+stringArrayList.get(position)+ " - view position: "+stringArrayList.get((int)view.getTag()));
}
}));
다음과 같이 목록의 시작 부분에 데이터를 추가하려고하면 정확한 문제가 발생합니다.
// retain scroll position and gives wrong position onClick
adapter.notifyItemRangeInserted(0, stringArrayListTemp.size());
// does not retain scroll position, scroll to top & gives right position onClick
//adapter.notifyDataSetChanged();
질문에서 불필요한 코드를 제거 recyclerview 위치를 유지 어떻게
같은 몇 가지 일을하려고합니다. 문제가 발생한 부분 만 게시하십시오. –