part.setOnClickListener(new View.OnClickListener() {
int pos = getAdapterPosition();
@Override
public void onClick(View v) {
if(select == false) {
part.setBackgroundColor(context.getResources().getColor(R.color.teal_700));;
select = true;
}
else {
part.setBackgroundColor(context.getResources().getColor(R.color.white));;
select = false;
}
listener.OnItemClick(v, position);
}
});
Fragment.java
adapter.setOnItemClickListener(new DialogItemAdapter.OnDialogItemClickListener() {
@Override
public void OnItemClick(View v, int pos) {
String data = adapter.getItem(pos).getPart();
}
});
리사이클러뷰 어댑터내에서 텍스트뷰에대한 클릭이벤트를 작성했는데요,
getAdapterPosition을 이용하여 현재 아이템에 대한 클릭이벤트를 작성합니다. (이벤트 기능에대한 구현은 외부에서 합니다)
그런데 해당위치에서 getAdapterPosition()을 사용하니 listener.Onitem(v, position)에서 호출시에러가나네요..값이 -1로 들어갑니다.. 정확히는 어댑터가 아니라 아래 코드 프래그먼트 코드의 getItem하는 부분에서
에러가나네요. 이 말은 즉 앞의 얻은 position 값은 없어지고 쓰레기값이 들어간것같은데요..
어댑터의 OnClick 함수내에서 getAdapterPosition을 하면 정상적으로 작동이 됩니다.
이유가 뭔가요?
익명객체라도 안에서 필드를 선언할수있는걸로 아는데 왜 값이 제대로 안들어 가는지 모르겠어요.
혹시 OnClick 내에서만 호출해야지만 제 값을 알 수있나요?
+++++++++++++++++++++++++++++++++++++++++++++
dialogAdapter.setOnItemClickListener(new DialogItemAdapter.OnDialogItemClickListener() {
@Override
public void OnItemClick(View itemView, int pos) {
Log.d(TAG, "OnItemClick: ");
String data = dialogAdapter.getItem(pos).getPart();
}
});