Notice
Recent Posts
Recent Comments
Tags
- 타임피커
- jquery 바코드
- 404에러페이지
- ViewBag
- javascript redirection
- 바코드 생성하기
- Mac Oracle
- asp.net core Select
- TempData
- XSS PHP
- 하드 마이그레이션
- php 캐쉬제거
- ViewData
- 하드 윈도우 복사
- ASP.Net Core 404
- asp.net Select
- 파일업로드 체크
- 강제이동
- 파일업로드 유효성체크
- javascript 바코드 생성
- javascript 바코드스캔
- jquery 바코드생성
- XSS방어
- django 엑셀불러오기
- javascript 유효성체크
- 말줄임표시
- 맥 오라클설치
- 바코드 스캔하기
- asp.net dropdownlist
- SSD 복사
웹개발자의 기지개
RecyclerView 기본 예제2 - onclick 이벤트 본문
기존 RecyclerView 기본 예제1( https://wonpaper.tistory.com/113 ) 에서는 내역목록을 주욱 살펴보는 내용이었다.
이번에는 각각의 아이템을 클릭시에 동작을 하도록 하는 기능을 구현해 보고자 한다.
[ RecyclerAdapter ]
기존 RecyclerAdapter 의 class ItemViewHolder 부분을 아래와 같이 수정한다.
< 방법1>
ItemViewHolder 생성자에서 itemView 아이템을 바로 onClick 처리한다.
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
32
|
// RecyclerView 의 ViewHolder 만든다.
class ItemViewHolder extends RecyclerView.ViewHolder {
private TextView textView1;
private TextView textView2;
private ImageView imageView1;
ItemViewHolder(@NonNull View itemView) {
super(itemView);
textView1 = itemView.findViewById(R.id.textView1);
textView2 = itemView.findViewById(R.id.textView2);
imageView1 = itemView.findViewById(R.id.imageView1);
// 하나의 아이템 전체인 itemView를 클릭했을때
itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(v.getContext(),textView1.getText() + " / " + textView2.getText(),Toast.LENGTH_SHORT).show();
}
});
}
// 실제 데이터들을 1:1 대응하여 각각의 내부뷰에 바인딩시킨다.
void onBind(Data data) {
textView1.setText(data.getTitle());
textView2.setText(data.getContent());
imageView1.setImageResource(data.getResId());
}
}
|
cs |
< 방법2>
ItemHolder 클래스에서 OnClickListener를 implements 해서 할 수도 있는데,
한 아이템 안의 각 항목들별로 세분화 하여 각각 클릭했을때 onclick 동작을 구현해 볼수도 있다.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
// RecyclerView 의 ViewHolder 만든다.
class ItemViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
private TextView textView1;
private TextView textView2;
private ImageView imageView1;
private Data data; // Data 객체를 지정한다. 밑에 onClick 함수에서 내용을
ItemViewHolder(@NonNull View itemView) {
super(itemView);
textView1 = itemView.findViewById(R.id.textView1);
textView2 = itemView.findViewById(R.id.textView2);
imageView1 = itemView.findViewById(R.id.imageView1);
itemView.setOnClickListener(this);
textView1.setOnClickListener(this);
textView2.setOnClickListener(this);
imageView1.setOnClickListener(this);
}
// 실제 데이터들을 1:1 대응하여 각각의 내부뷰에 바인딩시킨다.
void onBind(Data data) {
this.data = data;
textView1.setText(data.getTitle());
textView2.setText(data.getContent());
imageView1.setImageResource(data.getResId());
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.linearItem :
Toast.makeText(v.getContext(), "TITLE : " + data.getTitle() + "\nContent : " + data.getContent(), Toast.LENGTH_SHORT).show();
break;
case R.id.textView1:
Toast.makeText(v.getContext(), data.getTitle(), Toast.LENGTH_SHORT).show();
break;
case R.id.textView2:
Toast.makeText(v.getContext(), data.getContent(), Toast.LENGTH_SHORT).show();
break;
case R.id.imageView1:
Toast.makeText(v.getContext(), data.getTitle() + " 이미지 입니다.", Toast.LENGTH_SHORT).show();
break;
}
}
}
|
cs |
기존 RecyclerView 기본 예제1( https://wonpaper.tistory.com/113 )에서 item.xml 안의 큰테두리인 LinearLayout의 id값을 linearItem 로 부여했다.
'안드로이드' 카테고리의 다른 글
사이트 내용 추출 실습 2 - 크롤링하기 (로또 당첨번호, 네이버/다음 실시간 검색어 조회) , RecylerView 활용 (0) | 2019.07.28 |
---|---|
Log 의 유형 정리 (0) | 2019.07.24 |
RecyclerView 기본 예제1 (0) | 2019.07.10 |
사이트 내용 추출 실습 1 - 크롤링하기 (0) | 2019.07.05 |
jar 라이브러리 추가하기 (0) | 2019.06.30 |
Comments