Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- material3
- 터치이벤트 순서
- @provides @binds 차이
- 안드로이드
- dispatchTouchEvent
- 도형생성
- {"msg":"cannot find method
- 안드로이드 다이얼로그 오류
- android compose
- 원이동
- WindowManager$BadTokenException
- Python
- 지오코더
- [databinding]
- databinding error
- Android
- multiseekbar
- 듀얼시크바
- 터치순서
- 힐트
- 원생성
- Java
- 레트로핏
- databinding xml
- android.view.WindowManager.BadTokenException
- isFinishing()
- onIntercepterTouchEvent
- dualthumbseekbar
- Could not find method
- rangeslider
Archives
- Today
- Total
개발관련일지
AND ] 리사이클러뷰 코드정리 아이템클릭 - 자바 본문
리사이클러뷰의 아이템을 클릭하면 특성 이벤트가 실행 되도록 하기
이전글의 코드에 어뎁터에 아이템클릭 리스너를 추가하고 홀더에서 포지션 반환하도록하기
public class MainAdapter extends RecyclerView.Adapter<MainAdapter.CustomViewHolder>{
private ArrayList<Data> recyclerList;
public MainAdapter(ArrayList<Data> recipeList) {
this.recyclerList = recipeList;
}
public interface OnItemClickListener {
//메인엑티비티에서 리사이클러뷰의 아이템을 클릭했을 시 발생하는 이벤트
void onItemClick(View v, int position) ;
}
private OnItemClickListener listener ;
// OnItemClickListener 리스너 객체 참조를 어댑터에 전달하는 메서드
public void setOnItemClickListener(OnItemClickListener listener) {
this.listener = listener ;
}
@NonNull
@Override
public MainAdapter.CustomViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View view = LayoutInflater.from((parent.getContext())).inflate(R.layout.recycler_item,parent,false);
// 리사이클러뷰의 아이템을 recycler_item로 불러준다.
CustomViewHolder holder = new CustomViewHolder(view);
//뷰 홀더에 아이템에 사용될 뷰를 붙여준다.
return holder;
}
@Override
public void onBindViewHolder(@NonNull final MainAdapter.CustomViewHolder holder, int position) {
// getter를 이용해서 리사이클러뷰 아이템넘버(포지션) = 어레이리스트 인덱스의 데이터를 맞춤
holder.itemSubject.setText(recyclerList.get(position).getContent());
holder.itemContent.setText(recyclerList.get(position).getSubject());
holder.itemView.setTag(position);
}
@Override
public int getItemCount() {
return (null!= recyclerList ? recyclerList.size() : 0);
}
public class CustomViewHolder extends RecyclerView.ViewHolder {
private TextView itemSubject;
private TextView itemContent;
public CustomViewHolder(@NonNull View itemView) {
super(itemView);
//홀더가 동작할때 사용 될 뷰 정의
itemSubject = (TextView) itemView.findViewById(R.id.itemSubject);
itemContent = (TextView) itemView.findViewById(R.id.itemContent);
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// TODO : process click event.
int position = getAdapterPosition() ; //아이템 클릭햇을떄 포지션을 확인하기
if(listener!=null && position!= RecyclerView.NO_POSITION){
//포지션 값을 반환해서 클릭이벤트때 메인에서 활성화 한다
listener.onItemClick(v, position);
}
}
});
}
}
}
메인엑티비티의 onCreate에 해당 코드 추가
recipeAdapter.setOnItemClickListener(new MainAdapter.OnItemClickListener() {
@Override
public void onItemClick(View v, int position) {
//TODO 여기다가 클릭시 이용할 동작을 적으면 됨 파라미터의 position 사용하기
}
});
'개발기록 > 안드로이드' 카테고리의 다른 글
안드로이드 java] dual/multi thumbs seekbar -> RangeSlider를 이용해 만들기 (0) | 2021.01.03 |
---|---|
AND ] 안드로이드 레트로핏 사용하기 (0) | 2020.05.27 |
AND ] 레트로핏 사용하기전 찾아본것들 (0) | 2020.05.25 |
AND ] 쉐어드프리퍼런스 (0) | 2020.04.19 |
AND ] 리사이클러뷰 코드정리 - 자바 (0) | 2020.04.19 |