1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class PersonAdapter extends ArrayAdapter<Person>{
 
    //BaseAdapter가 리스트뷰의 어뎁터가 되기 위한 기본 부모클래스이지만 
    //관리하는 데이터가 배열에 특화되있는 어레이어뎁터를 상속받는게 작업이 쉽다.
    
    private Context context;
    private int resource;
    private List<Person> personList;
    
    public PersonAdapter(Context context, int resource, List<Person> objects) {
        super(context, resource, objects);
        // TODO Auto-generated constructor stub
        this.context = context;
        this.resource = resource;
        this.personList = objects;
    }
        
}
cs


1
2
 //BaseAdapter는 추상클래스, 어뎁터로서의 동작에 대한 템플릿은 구현되 있지만
 //getView, getItem, getItemPosition등등.. 핵심동작은 사용자가 상속받아서 정의해야됨
cs

ArrayAdapter는 바로 사용가능한 완성폼

getView만 우리 뷰에 맞게 재정의하면됨

1
2
3
4
5
6
7
8
9
10
11
    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        // TODO Auto-generated method stub
//        return super.getView(position, convertView, parent);
        if(convertView == null)
        {
            LayoutInflater inflater =(LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(resource, parent, false);
        }
        return convertView;
    }
cs


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        callIv.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Intent intent = new Intent(Intent.ACTION_CALL,Uri.parse("tel:" + person.getPhoneNum()));
                //<uses-permission android:name="android.permission.CALL_PHONE"/>
                //manifest에서 권한추가
                context.startActivity(intent);   전화걸기
            }
        });
        smsIv.setOnClickListener(new View.OnClickListener() {
            
            @Override
            public void onClick(View v) {                 문자 창으로 가기
                // TODO Auto-generated method stub
                Intent sendIntent = new Intent(Intent.ACTION_VIEW);
                sendIntent.putExtra("address", person.getPhoneNum());//받는사람
                sendIntent.setType("vnd.android-dir/mms-sms");
                context.startActivity(sendIntent);
            }
        });
cs


' IOT 기반 응용 SW과정 > Android, Arduino' 카테고리의 다른 글

Day98 안드로이드 db Select문  (0) 2016.08.05
Day97  (0) 2016.08.04
Day94 안드로이드 listview  (0) 2016.08.02
Day93 AlertDialog  (0) 2016.07.29
Day92  (0) 2016.07.28
1
2
3
4
5
6
7
8
9
setContentView(R.layout.activity_main);
        //해당 xml파일에 있는 요소들을 객체화
        //+
        //객체화 된 뷰를 전체화면으로 설정
        
        
        //xml을 객체화해서 전체화면으로 설정하는 -> setContentView
        
        //xml을 객체화해서 특정 뷰그룹에 집어넣는 역할 -> Layoutinflater
cs


인플레이션 : xml레이아웃에 정의된 내용이 메모리 상에 객체화되는 과정


inflation작업을 수행하는 작업은 LayoutInflater라는 클래스가 수행하고

해당 클래스의 객체는 시스템 서비스로 제공됨

시스템 서비스는 getSystemService메소드를 통해 제공 받을 수 있음

1
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
cs

Activity클래스 안에서라면 이렇게도 얻어올 수 있다.

1
LayoutInflater inflater = getLayoutInflater();
cs


LayoutInflater의 팩토리 메소드 사용해서 얻어올 수도 있다.

1
LayoutInflater inflater = LayoutInflater.from(MainActivity.this);
cs


1
2
//person_info.xml을 인플레이션해서 inputFormLayout뷰그룹안에 넣기
inflater.inflate(R.layout.person_info, inputFormLayout);
cs


inflate(xml정보, 뷰그룹) <-  부모로 삼을 뷰그룹 or null 

null일 경우 최상위 layout_xxx 무시

1
2
View view = inflater.inflate(R.layout.person_info, null);
inputFormLayout.addView(view);
cs


inflate(int res, ViewGroup root, boolean attacthToRoot)

res : 레이아웃 xml파일의 id

root : attacthToRoot가 true일 경우 생성되는 뷰가 추가될 부모뷰 attatchToRoot가 false일 경우 해당 레이아웃의 레이아웃파람만 사용, 

        null일 경우 레이아웃파람 무시

attachToRoot : true일 경우 생성되는 뷰를 root의 자식으로 만듬, false일 경우 root는 생성되는 뷰의 레이아웃파람을 생성하는데만 사용


inflate(xml정보, 뷰그룹, t/f)

1
2
View view = inflater.inflate(R.layout.person_info,inputFormLayout, false);
inputFormLayout.addView(view);
cs




' IOT 기반 응용 SW과정 > Android, Arduino' 카테고리의 다른 글

Day93 AlertDialog  (0) 2016.07.29
Day92  (0) 2016.07.28
Day90  (0) 2016.07.26
Day89 안드로이드 엑티비티 전환  (0) 2016.07.25
Day88  (0) 2016.07.22

+ Recent posts