Weather라는 클래스를 사용해서 데이터를 생성해줍니다.
1
2
3
4
5
6
7
8
|
ArrayList<Weather> data = new ArrayList<>();
data.add(new Weather("수원", "25도", "맑음"));
data.add(new Weather("서울", "26도", "비"));
data.add(new Weather("안양", "24도", "구름"));
data.add(new Weather("부산", "29도", "구름"));
data.add(new Weather("인천", "23도", "맑음"));
data.add(new Weather("대구", "28도", "비"));
data.add(new Weather("용인", "25도", "비"));
|
http://colorscripter.com/info#e" target="_blank" style="text-decoration:none;color:white">cs |
생성된 데이터를 어댑터에 연결시켜준 뒤 리스트에 그 어댑터를 꽂아주면 끝.
1
2
3
4
5
|
MyFirstAdapter adapter = new MyFirstAdapter(data);
// 뷰
ListView listView = (ListView) findViewById(R.id.list_view);
listView.setAdapter(adapter);
|
MyFirstAdapter에서는 날씨 데이터를 받아와 필요한 정보를 뽑아주는 역할을 담당.
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
// List 를 구현한 모든 것(ArrayList 등) 을 받는 생성자
public MyFirstAdapter(List<Weather> data) {
mData = data;
//mWeatherImageMap는 Map<string, integer> 선언한 뒤 사용중~
mWeatherImageMap = new HashMap<>();
mWeatherImageMap.put("폭설", R.drawable.blizzard);
}
// 아이템의 갯수
@Override
public int getCount() {
return mData.size();
}//size로 갯수를 파악가능
// position 번째의 아이템
@Override
public Object getItem(int position) {
return mData.get(position);
}// 해당 position의 데이터를 get해 넘겨줌
// position 번째의 아이디
@Override
public long getItemId(int position) {
return position;
}//아이디로 마땅히 넘겨줄게 position 밖에 없음
// position 번째의 아이템의 View 를 구성하는 부분
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder; //홀더를 설정해, 메모리 낭비 방지
//초반에 converView가 아무것도 없을떈 딱 한번 실행
if (convertView == null) {
holder = new ViewHolder();
convertView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.item_weather, parent, false);
// 날씨, 도시, 기온 View
ImageView weatherImage = (ImageView) convertView.findViewById(R.id.weather_image);
TextView cityText = (TextView) convertView.findViewById(R.id.city_text);
TextView tempText = (TextView) convertView.findViewById(R.id.city_text);
holder.weatherImage = weatherImage;
holder.cityText = cityText;
holder.tempText = tempText;
} else {
//그 이후엔 홀더에 바로바로 기존 tag가져와 대입해서 실행
holder = (ViewHolder) convertView.getTag();
}
// 현재 position 의 날씨 데이터
Weather weather = mData.get(position);
// 데이터 설정 => 홀더에 저장
holder.cityText.setText(weather.getCity());
holder.tempText.setText(weather.getTemp());
holder.weatherImage.setImageResource(mWeatherImageMap.get(weather.getWeather()));
return convertView;
}
static class ViewHolder {
ImageView weatherImage;
TextView cityText;
TextView tempText;
}
|
|
|
'Android Studio' 카테고리의 다른 글
[Android Studio] 코틀린으로 뉴스 리더 어플 만들기 (0) | 2020.03.22 |
---|---|
[Android Studio] CreateProcess error=2 해결 (0) | 2020.03.02 |
[Android Studio] startActivityForResult 사용해보기 (0) | 2020.02.27 |
[Android Studio] ActivityNotFoundException error (0) | 2020.02.27 |
[Android Studio] RecyclerView sync failed (0) | 2020.02.24 |