달력

12

« 2019/12 »

  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 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

댓글을 달아 주세요