기술 블로그
[안드로이드 복습] 10장 화면제약을 극복하기(스크롤뷰와 리스트뷰) 본문
반응형
엑티비티가 아닌 클래스에는 Layoutinflater 로 로드한 view에 명시적으로 도트연산자 후에 findViewbyid를 사용해야한다.
ex) convertView = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_dd,parent,false)//루트레이아웃이 아니므로 false
Textview textview = (Textview) convertView.findViewByid(R.id.txview1)
1. 스크롤뷰
화면 제약을 극복하기위한 스크롤을 지원하는 뷰로는 주로
ScrollView ListView GridView가 있다.
<ScrollView>태그로 감싼 스크롤 뷰는
오직 하나의 자식만을 가질 수 있다.
그러므로 리니어레이아웃 뷰를 보통 자식으로 둔다.
그러나 스크롤뷰는 한번에 모든 콘텐츠를 로드에 메모리 부족을 야기하므로
많은 정보를 담아야 할 떄는 리스트뷰와 그리드뷰를 사용해야한다.
리스트뷰와 그리드뷰는 AdapterView를 상속받은 뷰이다.
어뎁터뷰는 동일한 형태 많은양의데이터를 표현할 때 유용하다.
어뎁터뷰의 구현은 3단계로 이루어진다.
1. 데이터준비
2. 데이터를 뷰에 연결할 어뎁터 구현
3. 뷰에 어텝터 붙임 .
xml파일에 리스트뷰를 넣고
후에 main엑티비티에 코딩한다.
ArrayAdapter
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 | public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ArrayList<String> data = new ArrayList<>(); for(int i=0;i<30;i++){ data.add("data"+i); // ArrayList에 Stirng 데이터30개를 준비했다. } ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,data); // String형 어뎁터를 준비했다.파라미터는 context,int(레이아웃 리소스id ) , List 등 세 가지 이다. simple_list_item은 안드로이드에서 기본 제공해주는것으로 레이아웃당 Textview하나만 가리키는 id이다. (id는 내부적으로 int형으로 저장된다.) 세번째에는 ArrayList객체인 data를 전달하였다. ListView listView =(ListView)findViewById(R.id.list_view); //뷰에 관한건 new안쓰고 findviewbyid listView.setAdapter(adapter); //리스트뷰의 셋어뎁터 메소드 이용 어뎁터 연결 // 리스트뷰와 어뎁터를 연결했다. 리스트뷰 객체를 생성하고 (findviewbyid이용) 이에 setAdapter메소드를 통해 인자로 adapter라는 // ArrayAdapter객체를 넘겨주었다. listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { //리스트뷰의 셋온클릭리스너열고 인자에 뉴 어뎁터뷰.온클릭리스너객체에 온클릭아이템 오버라이딩 해서 쓴다. @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Toast.makeText(MainActivity.this, position+"번쨰 아이템 선택", Toast.LENGTH_SHORT).show(); } / // 온클릭리스너를통해 이벤트를 구현했다. 어뎁터뷰의 온 아이템 클릭리스터까지 치면 온 아이템 클릭 자동완성이 나온다. // position은 클릭된 아이템의 위치 , id는 아이템의 고유 아이디이다. 데이터베이스를 미사용한다면 둘은 같게 이용한다. // }); } } |
2.BaseAdapter
작성중
반응형
'Android' 카테고리의 다른 글
[안드로이드 복습] 6장 안드로이드는 액티비티다. (0) | 2018.11.17 |
---|---|
[안드로이드 복습]3장 뷰와 간단한 인텐트 (0) | 2018.11.17 |
android soundpool 사용하기 (0) | 2018.10.20 |
안드로이드 학습계획 (0) | 2018.09.26 |
안드로이드 책 (0) | 2018.09.24 |
Comments