달력

1

« 2020/1 »

  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  •  

커스터마징한 ListView 출력

   

   

강의 내용

activity_main.xml

RelativeLayout변경

Graphical Layout > Composite-ListView 추가

widget_icontext.xml

LinearLayout 변경

-android:orientation="horizontal"

Graphical Layout > Images&Media-ImageView 추가

Graphical Layout > Form Widgets-TextView 추가

-android:layout_width="match_parent"

Graphical Layout > Form Widgets-Button 추가

android:layout_weight

   

  

MainActivity.java

//리스트뷰에 출력할 항목 클래스 정의

//객체 선언

//데이터 생성 및 저장

//어댑터 객체 생성

//ListView와 매칭

//커스텀 어탭터 클래스

   

프로젝트 소스 코드

출처: <https://github.com/10zeroone/study_Android/tree/master/65ListViewCustomized>

   

   

출력 결과

   

   

   

   

   

   

   

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

ListActivity클래스를 상속받아 List에 추가하기

ListActivity (리스트뷰 전용 액티비티)

   

강의 내용

activity_main.xml

RelativeLayout변경

Graphical Layout > Form Widgets-TextView 추가

Graphical Layout > Composite-ListView 추가

MainActivity.java

extends ListActivity

//배열 생성

//View만드는 adapter객체 생성

//ListView에 ArrayAdapter등록(//고유ID에 adapter가 등록)

//이벤트 핸들러 재정의

   

   

ListActivity클래스

  • ListView정보 가지고 있음
  • onListItemClick( )라는 이벤트 핸들러가 구현되어 있어 이벤트를 재정의 해서 사용하면 됩니다.
  • ListActivity는 생성되는 Listview에 대한 정보를 가지고 있으며 listView는 ListActivity의 고유ID로 명시되어야 하며 고유ID에 adapter가 등록됩니다.

   

   

 

   

출력 결과

   

 

Posted by codedragon codedragon

댓글을 달아 주세요

입력한 문자열을 ListView에 추가하고 멀티선택항목 삭제하기

리스트의 데이터 삭제 (다중 삭제)

   

   

강의 내용

activity_main.xml

RelativeLayout변경

Graphical Layout > Layouts-LinearLayout(Horizontal) 추가

-Graphical Layout > Form Widgets-TextView 추가

-Graphical Layout > Form Widgets-Button 추가

-Graphical Layout > Form Widgets-Button 추가

-layout_weight 속성값 지정

Graphical Layout > Composite-ListView 추가

MainActivity.java

//변수 선언

//데이터 저장소 생성 및 데이터 추가

//체크박스로 다중 선택할 수 ListView만드는 adapter객체 생성

//ListView에 ArrayAdapter등록

//선택모드 지정(멀티 모드)

implements OnClickListener

//이벤트소스와 이벤트 리스너 연결

//이벤트 핸들러

   

   

다중 삭제시 주의사항

0번 인덱스 부터 확인해 삭제할 경우 해당 인덱스를 삭제하게면 삭제한 이후 인덱스번호가 바뀌기 때문에입니다.

다중 선택 시 마지막 인덱스 부터 확인하여 해당 항목을 삭제하게 되면 삭제시에도 인덱스 변화가 없어 정확한 데이터를 삭제할 수 있습니다.

   

   

SparseBooleanArray

  • ListView 다중 선택시 선택한 position에 대한 정보를 보관하는 객체
  • get()메소드를 호출하여 선택된 position값 구합니다.
  • get()는 position값이 존재하면 true반환합니다.

   

   

선택 위젯 구성 도식도

   

   

 

   

출력 결과

   

   

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

입력한 문자열을 LiewView에 추가하고 선택항목 삭제하기

리스트의 데이터 삭제 (단일 삭제)

   

강의 내용

activity_main.xml

RelativeLayout변경

Graphical Layout > Layouts-LinearLayout(Horizontal) 추가

-Graphical Layout > Form Widgets-TextView 추가

-Graphical Layout > Form Widgets-Button 추가

-Graphical Layout > Form Widgets-Button 추가

-layout_weight 속성값 지정

Graphical Layout > Composite-ListView 추가

MainActivity.java

//변수 선언

//데이터 저장소 생성 및 데이터 추가

//라디오버튼으로 선택할 수 ListView만드는 adapter객체 생성

//ListView에 ArrayAdapter등록

//선택모드 지정(단일 선택)

implements OnClickListener

//이벤트소스와 이벤트 리스너 연결

//이벤트 핸들러

   

   

   

출력 결과

데이터 추가

   

   

선택 > 삭제

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

입력한 문자열을 ListView에 추가하여 보여주기

데이터를 입력받아 텍스트뷰에 표시

String.xml에 문자열 입력하여 문자열 모듈화 (글로벌화)

   

   

강의 내용

activity_main.xml

RelativeLayout변경

Graphical Layout > Layouts-LinearLayout(Horizontal) 추가

-Graphical Layout > Form Widgets-TextView 추가

-Graphical Layout > Form Widgets-Button 추가

Graphical Layout > Composite-ListView 추가

MainActivity.java

//변수 선언

//해당객체의 참조값 반환

//데이터 저장소 생성

//저장소의 데이터를 ListView에 매핑하는 역할을 하는 adapter객체 생성

//ListView에 ArrayAdapter등록

//이벤트 소스와 이벤트 리스너 연결 (익명 내부 클래스)

\res\values\strings.xml

resources 코딩하여 문자열 모듈화

   

String.xml

   

   

   

출력 결과

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

여러 개의 아이템 중에 선택할 수 있는 ListView

정해진 데이터(배열)를 텍스트 뷰에 표시

   

강의 내용

activity_main.xml

RelativeLayout변경

Graphical Layout > Form Widgets-TextView 추가

Graphical Layout > Composite-ListView 추가

MainActivity.java

데이터를 가진 배열 생성

adapter 생성

//이벤트 소스와 이벤트 리스너 연결

//이벤트 핸들러

   

   

목록 작업 단계

  1. 배열의 데이터를 가지고 있는 adapter 생성
  2. ListView에 adapter를 등록하여 데이터를 매칭

   

new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, items);

this

Context 객체로 액티비티인 this를 전달

android.R.layout.simple_list_item_1

뷰를 초기화 할때 사용하는 XML레이아웃 리소스ID값

안드로이드에서 미리 정의된 레이아웃

  

items

아이템에 보여질 문자열 데이터

   

onItemClick(AdapterView<?> parent, View view, int position, long id)

AdapterView<?> parent

내부적으로 처리되는 데이터를 표현하기 위해 ?인 와일드카드형식으로 표시(오브젝트 타입을 의미)

이벤트가 발생한 리스트뷰의 정보

View view

리스트의 아이템별 개별적인 view

ListView에서 이벤트가 발생한 데이터를 표시하는 View

int position

인덱스 값, 데이터를 표시할 때의 위치값

long id

포지션값과 일치, 데이터베이스 연동시 primary key의 id가 명시됨

   

   

 

   

   

출력 결과

   

   

   

Posted by codedragon codedragon

댓글을 달아 주세요

   

ListView

  • 뷰 객체들을 수직 방향의 목록 형태로 보여줍니다.
  • 수직 스크롤을 지원합니다.
  • 일반적으로 목록의 각 항목은 자료를 담는 뷰입니다.
  • 여러 개의 아이템 중에 선택하는 기능을 넣을 때 자주 사용됩니다.

 

<LinearLayout

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical"

android:layout_width="fill_parent"

android:layout_height="fill_parent">

<TextView

android:id="@+id/selection"

android:layout_width="fill_parent"

android:layout_height="wrap_content"/>

<ListView

android:id="@android:id/list"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:drawSelectorOnTop="false"

/>

</LinearLayout>

   

 

ListActivity클래스

  • ListView정보 가지고 있음
  • onListItemClick( )라는 이벤트 핸들러가 구현되어 있어 이벤트를 재정의 해서 사용하면 됩니다.
  • ListActivity는 생성되는 Listview에 대한 정보를 가지고 있으며 listView는 ListActivity의 고유ID로 명시되어야 하며 고유ID에 adapter가 등록됩니다.

   

public class ListViewDemo extends ListActivity {

TextView selection;

String[] items={"봄","여름","가을","겨울"};

 

@Override

public void onCreate(Bundle icicle) {

super.onCreate(icicle);

setContentView(R.layout.main);

setListAdapter(new ArrayAdapter<String>(this,

android.R.layout.simple_list_item_1,

items));

selection=(TextView)findViewById(R.id.selection);

}

 

public void onListItemClick(ListView parent,

View v,

int position,

long id) {

selection.setText(items[position]+", position : " +position);

}

}

 

 

Posted by codedragon codedragon

댓글을 달아 주세요

선택 위젯(Selection Widget)

  • 여러 개의 아이템 중에 하나를 선택할 수 있는 위젯.
  • 일반위젯과 다르게 선택 위젯은 어댑터를 사용하므로 직접 위젯에 데이터를 설정할 수 없습니다.
  • 어댑터에서 만들어주는 뷰를 이용해 ListView의 한 아이템으로 보여주는 방식입니다.

   

   

어댑터(Adapter)

  • 여러 개의 항목중에서 하나를 선택해야 하는 선택 위젯은 어댑터를 사용해 합니다.
  • 데이터는 직접 위젯에 설정되지 않고 어댑터를 설정해서 선택위젯에 표시되게 됩니다.

   

   

어댑터뷰

  • 자식 뷰들과 그것들을 관리하는 어댑터를 갖는 뷰
  • 리스트 형식으로 자식 뷰들을 배치하는 뷰들은 어댑터 뷰라는 특성
  • 모든 어댑터 뷰들은 ViewGroup 클래스와 AdapterView 클래스를 상속
  • 모든 어댑터 뷰에는 어댑터 패턴(adapter pattern)이라는 디자인 패턴(design pattern)이 적용되어 있습니다.
  • AdapterView는 ViewGroup을 상속받으며 어댑터(adapter)라는 객체를 갖는다는 점특징입니다. 어댑터는 어댑터 뷰와 자식 뷰들 사이를 이어주는 중간 역할을 하게 됩니다. 어댑터는 자식 뷰들을 정의하고, 어댑터 뷰는 어댑터를 통해 이들에 접근할 수 있습니다.

   

   

어댑터뷰(AdapterView) 계층도

   

AbsListView

리스트 형식으로 자식 뷰들을 보여주는 어댑터 뷰들의 공통점들을 정의한 추상 클래스입니다.

ExpandableListView

ListView를 상속 받습니다. 이것은 확장 가능한 항목을 리스트에 추가할 수 있다는 기능이 추가되었습니다.

Spinner

사용자가 터치하면 별도의 자식 뷰 오픈하여 리스트를 보여줍니다. 이 자식 뷰들을 위 또는 아래로 회전시킬 수 있습니다.

Gallery

자식 뷰을 가로로 나열하고, 사용자는 나열된 항목들을 왼쪽이나 오른쪽으로 회전시킬 수 있습니다.

   

   

어댑터뷰 패턴 도식도

  • 선택위젯은 어댑터를 통해 데이터를 설정합니다.
  • 어댑터에서 만들어주는 뷰를 이용해 ListView의 한 아이템을 보여주게 됩니다.

   

   

   

선택 위젯 종류

ListView

뷰 객체들을 수직 방향의 목록 형태로 보여줍니다.

Spinner

드롭다운 선택 기능을 구현한 클래스

GridView

뷰 객체들을 고정된 개수의 열들로 이루어진 격자(grid)형태로 배치시킵니다.

Gallery

진열, 전시형식으로 선택 아이템을 보여줍니다.

AutoCompleteTextView

입력 필드에 글자를 입력하면 해당 글자의 자동 완성된 리스트를 보여줍니다.

   

   

   

   

   

   

   

   

   

 

AutoCompleteTextView

  • 입력 필드에 글자를 입력하면 해당 글자의 자동 완성된 리스트를 보여줍니다.

   

속성

문자열,리소드 ID

의미

android:completionHint

 

드롭다운 목록 아래에 표시될 도움말

android:completionThreshold

 

자동 완성 드롭다운 목록이 언제 표시될 것인지를 결정. 1은 한 글자만 입력, 2는 두 글자부터

 

Posted by codedragon codedragon

댓글을 달아 주세요