https://www.youtube.com/watch?v=xgpLYwEmlO0

 

본 내용은 위 강의의 내용을 참조하였습니다.

 

이번에는 리사이클 뷰의 아이템을 클릭 시 

아이템 내용에 대해 구체적인 설명을 하는 액티비티를 생성하는 

기능을 추가해보겠습니다. 

 

 

우선 클릭시 등장하는 액티비티를 만들어 보겠습니다.

 

 

empty 액티비티 하나를 생성합니다. 

 

컴포넌트 트리에 위와 같이 이미지 뷰와 텍스트 뷰 2개를 등록합니다.

ConstraintLayout은 이제 어느 정도 하실 수 있을 겁니다.

혹시 안된다면 위의 동영상을 참조해주세요

 

 

 

이런 느낌으로 만들어 주세요

전 이미지가 커서 이미지 뷰 가로 세로 크기를

100dp로 고정시켰습니다.

다음으로 my_row로 돌아가서 카드뷰가 부모로 하는 ConstraintLayout의 아이디를 만들어주세요

클릭 리스너에 등록을 위해 필요합니다. 

아이디 등록이 끝났다면, 어댑터의 뷰 홀더로 돌아가서 등록합니다.

 

 

아이템이 클릭되면  자세한 설명이 있는 액티비티로 넘기기 위해 아래와 같이

layout에 리스너를 설정합니다.

 

자세한 설명이 있는 액티비티로 누른 아이템의 정보도 같이 putExtra로 담아줍니다.

 

이제 자세한 설명이 있는 액티비티로 넘어옵니다.

코드는 아래와 같이 작성합니다.

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
package com.example.recyclerview;
 
 
 
public class Main2Activity extends AppCompatActivity {
 
    ImageView mainImageView;
    TextView title, description;
 
    String data1, data2;
    int myImage;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main2);
 
        mainImageView = findViewById(R.id.imageView2);
        title = findViewById(R.id.textView3);
        description = findViewById(R.id.textView4);
 
        getData();
        setData();
    }
 
    private void getData(){
        if(getIntent().hasExtra("images"&&
                getIntent().hasExtra("title"&& getIntent().hasExtra("description"))
        {
            data1 = getIntent().getStringExtra("title");
            data2 = getIntent().getStringExtra("description");
            myImage = getIntent().getIntExtra("images"1);
 
        } else{
            Toast.makeText(this,"No data", Toast.LENGTH_SHORT).show();
        }
 
 
    }
 
    private void setData() {
        title.setText(data1);
        description.setText(data2);
        mainImageView.setImageResource(myImage);
    }
}
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4ftext-decoration:none">Colored by Color Scripter
 

이 코드의 핵심은 getData함수 소스라 할 수 있습니다.

getIntent.hasExtra()를 통해 인텐트에 담겨온 데이터가 있는지 여부를 판별합니다.

있다면 getStringExtra와 getIntExtra를 통해 데이터를 받아옵니다.

이제 받아온 데이터를 setData()함수를 통해서 값을 넣어줍니다.

 

강아지를 클릭해보겠습니다.

 

소스코드는 깃허브에 있습니다.

https://github.com/3210439/RecyclerView

+ Recent posts