실전에서 많이 쓰이는 참조형 리스트뷰 에대한 사용 방법임.
이전 포스팅과 코드가 많이 겹치므로 이어서 사용함.
(※ 이전포스팅 주소 : https://asterisco.tistory.com/45)
00. 자바위에 마우스오른쪽버튼 클릭 - New - JavaClass 클릭.
01. 이름을 부여하고 OK버튼 클릭 (FruitsItem이라고 지음)
02. 다음과 같이 입력하고 마우스 오른쪽 버튼클릭 - Generate 클릭
public class FruitsItem{
String names;
String ages;
}
03. Getter and Setter 로 불러들여온다.
04. 두개다 선택하고 클릭
05. 다시한번 바탕화면에서 마우스 오른쪽버튼클릭 - Generate 클릭
06. 이번에는 Constructor를 클릭
07. 이번에도 두개다 선택한후 OK버튼을 클릭한다.
08. 다음과 같이 나타나는데 디폴트생성자만 하나 더 추가해주자.
09. 메인Script로 와서 지정되었던 값들을 밖으로 빼고 ArrayList를 사용하여 이 값들을 참조하자.
10. 중간에 addItem 을 하나 만들어주고 마지막부분을 효율을 높여주기위해 다음과 같이 수정한다.
@Override
public View getView(int position, View convertView, ViewGroup parent) {
FruitsItemView view = null;
if (convertView == null){
view = new FruitsItemView(getApplicationContext());
} else {
view = (FruitsItemView) convertView;
}
FruitsItem curItem = items.get(position);
view.setName(curItem.getName());
view.setAge(curItem.getAge());
return view;
}
11. 실행시켜본다.
12. 정상적으로 작동됨을 확인 할 수 있다.
참고: 메인자바스크립트 전체코드임.
package com.example.joey.mylistview;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity {
ListView listView;
FruitsAdapter fruitsAdapter;
String[] names = {"사과", "바나나", "딸기", "메론", "오렌지"};
String[] ages = {"21", "23", "25", "68", "10"};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
fruitsAdapter = new FruitsAdapter();
fruitsAdapter.addItem(new FruitsItem(names[0], ages[0]));
fruitsAdapter.addItem(new FruitsItem(names[1], ages[1]));
fruitsAdapter.addItem(new FruitsItem(names[2], ages[2]));
fruitsAdapter.addItem(new FruitsItem(names[3], ages[3]));
fruitsAdapter.addItem(new FruitsItem(names[4], ages[4]));
listView.setAdapter(fruitsAdapter);
}
class FruitsAdapter extends BaseAdapter {
ArrayList<FruitsItem> items = new ArrayList<FruitsItem>();
@Override
public int getCount() {
return items.size();
}
public void addItem(FruitsItem item){
items.add(item);
}
@Override
public Object getItem(int position) {
return items.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
FruitsItemView view = null;
if (convertView == null){
view = new FruitsItemView(getApplicationContext());
} else {
view = (FruitsItemView) convertView;
}
FruitsItem curItem = items.get(position);
view.setName(curItem.getName());
view.setAge(curItem.getAge());
return view;
}
}
}