안드로이드 개발 질문/답변
(글 수 45,052)
안드로이드 공부하고있는 학생입니다.
추운 날씨에 모두 수고들 많으십니다.
지금 칼로리 계산 어플을 하나 만들고 있는데 .. 벌써 3일째 진도를 못나가고 있어서 답답한 마음에.. 글을 올려봅니다.
부단한 노력으로 검색도 해보고 했지만 원하는 방법을 찾지못해 도움을 부탁드립니다.
일단 지금 개발하고 있는건 칼로리 계산기 인데요
DB생성및 데이터값을 인터넷에 흔히 있는 예제에 있는 cursor 이용 해서 배열 가져오는 방법으로 하면 textview에 뿌리는것까지는
무리가 없습니다만.. view를 listview 이용할시 .. '어뎁터'를 이용해야되서 어렵더라구요..
여기 저기 있는 예제를 봐도이해가 잘안되고.. 강좌를 봐도 어뎁터에 대한 자세한 설명은 나와있지않아.. 난해합니다.
DB에 있는섭취날짜 음식명 칼로리 단위구분(조각/공기) 이 4가지 필드값을 이용해서 쿼리문 써서 사용자가 섭취한 음식들의 앞서 말씀드린 4가지사항 listview로 뿌려주려고 합니다...
요는.. adapter / dbadapter .. 커스터 마이징 하는방법..
하는 '방법' 꼭 부탁 드립니다.. 이해해야 잠이 올거같습니다.. ^^
흠... 커스터마이징.. 텍스트 뷰 4개를 포함하 고 잇는 레이아웃을 리스트뷰에 집어 넣는다고 가정했을 때..
1 /우선 xml을 만들어야겠죠,, 텍스트뷰 4개가 잇는..
2. /baseAdapter 를 상속 받은 어뎁터 클래스를 만들고
생성자에 인플레이터를.. 선언
inflater = (LayoutInflater) ctx.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
3. 오버라이딩 메서드 중에 getCount 는 리턴값을 꼭 써줘야 하더라고요 (ex : return cursor.getCount() )
4. getView 메서드 에서는 인플레이트 할껍니다..라고..선언해주고
convertView = inflater.inflate(layout, arg2, false);
5. 리스트뷰에 들어갈 텍스트 뷰 4개를 선언해 주죠
convertView.findViewById(R.id.textView01);
6. setText 해줍니다.. (cursor.moveToPosition(position) <-- position 은 getVIew의 첫번쨰 인자
이런 방법을 사용하든 미리 저장해둔 list안에 있는 걸 가져오든.. list.get(position),toString()
중요한건 position 이라는 인자로 해당 라인을 컨트롤 한다는거..?
7. 본문에서 listview. 에 어댑터를 다는거죠
listView.setAdapter(new CustomAdapter( 아까만든 xml 주소, context) )
달아 놓으면.. CustomAdapter의 오버라이딩 메서드중 getCount 의 리턴값 만큼 루프가 돌면서 getView() 가 실행됩니다
포지션을 하나 씩 바꾸면서.. 대략 이런식인것 같아요.. 저도 공부하는 입장이라 정확한 내용인지는 모르겠습니다 ;;
글고 궂지 어뎁터 클래스를 만들지 않으셔도 SimpleAdapter 로 커스터마이징 하는 방법도 있습니다~