Scope Function(범위 지정 함수)

  • 객체에서 람다 함수를 호출하면 해당 함수는 일시적인 Scope를 생성하고, 해당 Scope 안에서는 객체의 이름 없이도 접근이 가능하다.

 

apply

  • 참조 연산자를 사용하지 않는다.
  • 처리가 끝나면 인스턴스를 반환한다.
fun main() {
	var a = Food("사과",2000).apply{
    	name = "세일 중인" +name
        discount()
    }
}
class Food(var name: String, var price: Int){
	fun discount(){
    	price -= 500
	}
}

run

  • 참조 연산자를 사용하지 않는다.
  • 처리가 끝나면 최종값을 반환한다.(마지막 구문의 값을 반환)
fun main() {
	var a = Food("사과",2000).apply{
    	name = "세일 중인" +name
        discount()
    }
   
    a.run {
    	println("상품명: ${name}, 가격: ${price}원")
    }
    
}
class Food(var name: String, var price: Int){
	fun discount(){
    	price -= 500
	}
}

 

 

 

with

  • 인스턴스를 파라미터로 받는다.
    with(a) {
    	println("상품명: ${name}, 가격: ${price}원")
    }

 

also

  • 처리가 끝나면 인스턴스를 반환한다.
  • 파라미터를 통해 인스턴스를 넘긴다.

---- price 가 중복될 경우! -----

fun main() {
	var name = "오렌지"
	var a = Food("사과",2000).also{
    	it.name = "세일 중인" +it.name
        discount()
    }
}
class Food(var name: String, var price: Int){
	fun discount(){
    	price -= 500
	}
}

 

 

let

  • 처리가 끝나면 최종값을 반환한다.
  • 파라미터를 통해 인스턴스를 넘긴다.

---- price 가 중복될 경우!  -----

fun main() {
    var price = 5000
	var a = Food("사과",2000).apply{
    	name = "세일 중인" +name
        discount()
    }
   
    a.let {
    	println("상품명: ${it.name}, 가격: ${it.price}원")
    }
    
}
class Food(var name: String, var price: Int){
	fun discount(){
    	price -= 500
	}
}

 

 

 

룸복(Lombok)

룸복(Lombok)이란 자바에서 model object를 만들때 멤버필드에 대한 Getter,Setter,ToString등 과 같이
불필요하게 반복적으로 만드는 코드를 어노테이션화하여 간결화시키는 라이브러리이다.
아래의 코드를 보면 쉽게 알 수 있다.

 

 

 

Model.class

public class Model{
 	private String id;
    private String modelId;
    private String name;
      public String getId() {
            return id;
      }
      
      public void setId(String id) {
            this.id = id;
      }
      
      public String getModelId() {
            return modelId;
      }
      
      public void setModelId(String modelId) {
            this.modelId = modelId;
      }
      
      public String getName() {
            return name;
      }
      
      public void setName(String name) {
            this.name = name;
      }
      
      @Override
       public String toString() {
            return "id + modelId+ name";
      }


}

 

 

 

@어노테이션을 사용해 간결하게 한다.

@Getter
@Setter
@ToString
public class Model{
	private String id;
    private String modelId;
    private String name;
}

 

 

 

아래와 같이 @Data로 변경하여 더 간결하게 사용!

@Data
public class Model{
	private String id;
    private String modelId;
    private String name;
}

 

 


Junit

 

Junit이란 자바 프로그래밍 언어용 테스팅 프레임워크이다.

 

  • assert메소드로 테스트케이스의 수행결과를 판별한다
  • 어노테이션을 제공한다(@Test,@Before,@After)


@Test
-@Test가 선언되면 테스트를 수행하는 메소드가 된다. (각자 테스트는 영향을 주지 않고 독립적으로 실행한다)

@Test
public class Test{
}

 

@Before

-@Before가 선언되면 Test메소드 전에 반드시 실행된다. 
(자바 static처럼 실행하기전 공통으로 사용할 코드를 미리 선언하는 개념 )

@Before
class Before{
//Test전에 실행 됨
}

 


@After

-@Test실행 된 후에 실행된다.

@After
class After{
//Test한 후에 실행 됨
}

 

 

 


log4j & slf4j

 

log4j(log for java)

 


log4j는 자바기반의 로깅 유틸리티를 말한다.
log4j는 높은 등급에서 낮은등급으로 6개의 로그 레벨을 가지고 있다.

 

 

깅 레벨 : FATAL -> ERROR -> WRN -> INFO -> DEBUG
FATAL : 치명적인 에러가 발생
ERROR : 일반 에러 발생
WARN : 에러x,주의할 필요가 있을 때 발생
INFO : 일반 정보
DEBUG : 일반 정보 상세하게

 

 

 


log4j는 크게 3가지 구성요소가 있다.


Logger -로깅 메세지를 Appender에 전달
Appender - 전달 메세지를 어디에 저장할지 정한다.
Layout - 어던 형식으로 출력할지 정한다.

 

 


slf4j(Simple Logging Facade for java)


slf4j는 logging framework의 추상체(facade) 역할을 한다.
logging framework에는 Log4j나 Logging,Logback등 다양한데 이 framework를

변경하려면 java코드를 직접 변경해야 한다.

하지만slf4j를 사용하면 java코드를 변경하지 않고 framework를 변경할 수 있다.

 

 

오버라이딩 vs 오버로딩 비교 & 정리

 

 

 

오버라이딩오버로딩의 차이에 대해 알아보자!

 

 

 

오버로딩(Overloading)

메소드 이름은 같지만 매개변수의 자료형이나 개수가 다른 경우를 오버로딩이라고 한다.

오버로딩에는 크게 두 가지로 생성자 오버로딩과 메소드 오버로딩으로 나눌 수 있다.

 

 

두 방법에는 크게 다른 점은 없지만 활용하는 방법 위주로 알아두면 된다.

 

 

 

 

메소드 오버로딩

public void graduate(int a){
	System.out.println(a);
}
public void graduate(int a,char b){
	System.out.println(a +","+ b);
}
public void graduate(String c){
	System.out.println(c);
}

 

 

생성자 오버로딩

public class Person{
	String name;
    int num;
    public Person(){}
    public Person(String name)
    {
    	this.name = name;
    }
    public Person(String name,int num)
    {
    	this.name = name;
        this.num =num;
    }
}
public class Example
{
	public static void main(String args[]){
    	// Person 객체 생성
    	Person person = new Person("SeungWon"); //name = SeungWon 
    	Person person = new Person("SeungWon",97); //name = SeungWon, num = 97
    }
}

 

  

 

 


 

 

오버라이딩(Overriding)

 

상위 클래스에 있는 메소드를 하위 클래스에서 재정의하는 과정을 오버라이딩이라고 한다.

 

  • 상속관계가 있는 자식 클래스에서 부모 클래스에게 메소드를 가져와 새롭게 사용한다는 의미이다.
class Animal{
public void cry(){
	System.out.println("ummm");
}  
}
class Dog{
public void cry(){
	System.out.println("bark");
}  
}
class Cat{
public void cry(){
	System.out.println("meow");
}  
}

상속(Inheritance)

 

 

상속(Inheritance)이란 부모 클래스에 있는 메소드나 변수 등을 자식 클래스가 물려받는 것을 말한다.
즉 자식 클래스는 부모 클래스에 있는 메소드나 변수 등을 재구성(오버라이딩)하여 사용한다.

하지만 부모 클래스는 자식 클래스에 있는 메소드나 변수를 사용할 수 없다.

 

 

 

1. private인 메소드나 변수는 절대 불가하며 나머지 접근 제어자는 상황에 따라 다르다.

어떤 상황에 접근 제어자를 사용해야 할지 알고 싶다면

2020/09/14 - [대외 활동/CADI(개발A 보충스터디)] - java 접근 제어자(private,protected,default,public)

 

java 접근 제어자(private,protected,default,public)

접근 제어자(access modifier) 외부에 대한 접근을 제어하는 문법을 접근 제어자(access modifier)라고 한다. 보통 변수나 함수, 클래스앞에 접근 제어자를 붙이고 접근 허용 범위를 관리한다. 접근 제어��

dev-seungwon.tistory.com

 

 

2.자식 클래스가 부모 클래스를 상속받기 위해서는 extends를 사용해야 한다.

 

 

public class Parent{
	private int a; // Child 에서 호출 불가
	protected int b; //Child 에서 호출 가능
    public String naming(){
    System.out.println("부모");
    }
}

public class Child extends Parent{
	System.out.println(b); //Parent 변수 사용 가능
	public String naming(){
    System.out.println("자식");
    } //오버라이딩
}

 

 

 

 

위 코드와 같이 자식 클래스가 부모 클래스에 있는 메소드를 재정의하는 것은 오버라이딩(Overriding)이라고 한다.

오버라이딩에 대한 내용은

2020/09/06 - [대외 활동/CADI(개발A 보충스터디)] - 오버라이딩 vs 오버로딩 비교 & 정리

 

오버라이딩 vs 오버로딩 비교 & 정리

오버라이딩 vs 오버로딩 비교 & 정리 오버라이딩과 오버로딩의 차이에 대해 알아보자! 오버로딩(Overloading) 메소드 이름은 같지만 매개변수의 자료형이나 개수가 다른 경우를 오버로딩이라고

dev-seungwon.tistory.com

 

 

다형성(Polymorphism)

 

 

 

이러한 오버라이딩은 다형성(Polymorphism)과 연관이 있다.
다형성은 같은 이름의 메소드가 다양한 결과를 나타낼 수 있다는 특징이 있다.
자식 클래스에 재정의해서 사용할 수 있기 때문에 naming()메소드는 부모와 자식에서의 사용이 다르다.  
또한 클래스를 인스턴스화 하여 부모나 자식을 참조하는 객체를 만들어 다형성을 나타낼 수도 있다.

 

public class Main(){
	public static void main(String []args){
 		 Parent person = new Child(); 
 		 person.naming(); //Child 클래스에 있는 내용이 나옴
    }
 }

 

 

안드로이드 생명주기

 

 

 

 

생명 주기 콜백 메소드 - 액티비티가 변할 때마다 약속된 메소드를 호출한다.

 

 

onCreate() 


액티비티가 생성되면 호출된다. 생성주기에서 가장 필수적인 요소 
onCreate()에서는 특별하게 UI 생성 시 ViewGroup을 통해
setContentView로 전달하여 레이아웃을 사용한다.

 

 



onStart()


액티비티가 시작되면 호출된다. onResume()으로 가기 전 단계이며 사용자에게 전달되기 직전에 나타난다.

 

 

 

 

 

onResume()

사용자에게 이 액티비티가 focus되고 화면이 보여지는 단계이다.

 

 

 

 

onPause()

다른 액티비티가 호출될 때 나타난다. 이 액티비티가 focus 되지 않았지만 아직 살아있는 단계이다.

 

 

 

 

onStop()

화면에서 전부 가려지고 다른 액티비티가 나타날때 호출된다. onPause()와의 차이는 시간이 오래 걸리면 onStop()으로 넘어온다.

 

 

 

 

onDestroy()

 

액티비티가 완전히 없어질 때를 말한다. 메모리 확보를 위해 메모리 또한 없앤다.

새로워진 안드로이드10 !!

 

구글에서는 안드로이드 파이(9)버전에서 다음 버전인 안드로이드 Q 버전으로 만들지 않았다. 원래 알파벳 순으로 P다음 Q의 차례이다. 하지만 비영어권 국가에 대한 배려와 각 국가마다 발음이 다르다는 이유로 더 이상 디저트 이름으로 네이밍하지 않겠다고 하였다.

 

안드로이드9 vs 안드로이드10 비교 

 

 

안드로이드 9(파이)는 2018년 8월 6일에 출시

안드로이드 10은 2019년 9월 3일에 출시

 

 


 

 

1. 제스처 기능 변화

 

 제스처 기능을 설정하고 싶다면  설정 -> 디스플레이 -> 네비게이션 바를 통해 변경할 수 있다.

 

 

 

 

 

9(파이) 버전에서는 이러한 형태의 네비게이션 바가 아래로 숨겨져 있어서 화면이 더 커 보이고 편리하게 사용하라는 목적으로 만들어졌다. 하지만 왼쪽에 뒤로가기 버튼이 고정되어있기 때문에 원래 위치와 달라서 불편했다. 또한 항상 위로 올리기 때문에 삼성페이를 사용하는 분들은 다소 번거롭다.

 

 

 

 


 

 

 

안드로이드 10버전에서는 안드로이드 9(파이)버전에서 불편했던 제스처 기능이 업데이트 되고 새롭게 변화되었다.

우선 아래에서와 같이 버튼 순서도 고를 수 있고 

 

 

화면 제스처를 선택했을 때 

 

 

 

 

 

 

옵션 더보기를 누르면 9버전인 아래에서 위로, 새롭게 추가된 여러 방향으로 와 제스처 민감도가 있다.

여러 방향으로는 홈 화면 하단에서 위로 올리면 홈으로 가게되고 뒤로가기는 왼쪽으로 밀기, 등 실생활에 사용되기 쉽게 만들었다. 

제스처 민감도를 통해 터치 인식되는 민감도를 조절할 수 있다.

 

 

 


 

2. 야간모드 vs 다크모드

 

설정 -> 디스플레이 -> 다크모드

안드로이드 9 야간모드에서 10 다크모드로 변경된 점은 크게 두 가지가 있다.

 

배경에 적용, 다크모드 강제 적용(다른 앱에서도 다크모드 사용 가능)

 

 

 

 

위에 노티바를 내린 후 다크 모드를 누른다.

 

 

 

 

배경화면에 적용을 누르게 되면 폰 배경이 전체적으로 어둡게 된다.(눈 보호 목적)

 

 

 

추가기능 : 설정 -> 개발자 옵션 ->다크모드 강제 적용을 누르게 되면 다른 앱들도 다크모드를 적용할 수 있다!!

 

 


 

3.한손 조작모드 Upgrade!!

 

 

 

 

 

 

안드로이드 9(파이)에서도 한손 모드가 적용이 되었다. 하지만 안드로이드 10에서는 좀 더 불편하고 까다로운 부분들을 개선하였다. 기존 방식에서는 <하단의 모서리를 대각선 방향으로 위로 밀어 올린다> <홈 버튼을 3번 누른다> 이 방법으로 실행되었다. 하지만 이 방법이 인식하는 과정에서 불편함을 해결하고자 이러한 형태로 바뀌었다.

 

 


 

4. Edge Lighting 기능 효과 추가!!

 

 

안드로이드 9 -> 10 업데이트 과정에서 엣지 스크린은 Edge Lighting 기능이 추가되었다.

 

 

 

 

Edge lighting -> 불빛 스타일을 누르게 되면

 

 

 

 

아래 그림처럼 효과를 고를 수 있다.

 

 

 

 

 

 


 

 

안드로이드 10에 대해 더 알고 싶다면 

https://www.android.com/android-10/

 

Android 10 | Android

Android 10의 최신 기능, 개선사항, 새로운 관리 기능을 모두 살펴보세요. 새로운 개인정보 보호 설정에서 폴더블 및 5G 지원까지 다양한 내용이 준비되어 있습니다.

www.android.com

 

Android 11

2020년 2월 20일에 개발자 프리뷰가 공개된 안드로이드의 새로운 버전이다. 지금은 배타 버전이 출시 되었고
2020년 9월초에는 공식 버전이 공개될 것으로 예상된다. (곧 출시될 예정이네요)

 

 

기존 안드로이드 10에서는 9에 비해 다크모드나 제스처 기능 등 여러가지 기능들이 눈에 띄게 바뀌었다.

하지만 이번 11버전 업데이트는 다소 세부적인 기능들 위주로 변화가 이루어졌다.

 

 

 

기존 파이(9)버전과 10을 비교하고 싶다면

 

2020/08/28 - [대외 활동/CADI(개발A 보충스터디)] - 새로워진 안드로이드10 !!

 

새로워진 안드로이드10 !!

새로워진 안드로이드10 !! 구글에서는 안드로이드 파이(9)버전에서 다음 버전인 안드로이드 Q 버전으로 만들지 않았다. 원래 알파벳 순으로 P다음 Q의 차례이다. 하지만 비영어권 국가에 대한 배��

dev-seungwon.tistory.com

 

 

 


 

 

 

안드로이드 11의 새로워진 기능들

 

 

 


1. 일회성 권한


 내 기기에 접근 권한 허용을 원한다면 기존 10버전에서는 앱 사용중에만 허용이라는 기능이 있었다.
하지만 11버전에서 이번만 허용이라는 기능이 추가되었는데 이 어플을 다시 시작하여도
나타나는 기능이다. 즉 한번만 사용할 이용자를 위한 기능이 추가되었다,

 

 

 

 


2.5G기능 추가 및 감지


11버전부터 앱에서도 5G를 지원하는 기능이 추가된다. 또한 콜백 API를 호출하여
기기가 5G에 잘 연결되어 있는지 감지할 수 있다. 현재 5G가 잘 사용되지 못한다는 점을
보안하기 위해 이 기능들이 추가되었다고 본다.

 

 

 

 


3.버블(Bubble)


우리는 흔히 카카오톡이나 페이스북의 대화 알림을 바로가기 알림창을 통해 확인한다.
안드로이드 11버전에 추가된 이 기능또한 같은 기능이다. 대화창을 버블 알림을 통해 표시하는 기능이므로
사람들이 보다 편리하게 대화를 할 수 있는 기능을 제공한다.

 

 

 

 


4. 토스트 메시지


백그라운드에서 실행되는 앱은 보안상의 이유로 맞춤 뷰가 포함된 토스트 메세지를 보낼 수 없다.
단순한 텍스트만 포함된 메세지는 보낼 수 있다.

 

 

 

 


5.권한 초기화


대부분의 사람들은 앱을 설치한 후 권한 허용을 하고 나면 다시 취소를 하지 않는다.
그 앱을 언제 다시 사용할지 모를 뿐더러 할 생각도 나지 않을 것이다. 그렇게 때문에 오랜 시간동안 해당
어플을 사용하지 않는다면 자동으로 권한이 초기화되는 기능이다.

 

 

 

Java -> Kotlin 변환하기

 

 

 

 

초기 설정

 

 

처음 Android Studio를 시작할 때 여기에서 Java 혹은 Kotlin 언어를 고를 수 있다. 하지만 내부에서도 변환이 가능하다.

 

 

 

 


 

 

 

Kotlin으로 변환하는 방법

 

 

 

1.Code ->Convert Java File to Kotlin File

 

 

 

 

2. OK를 누른 후 

 

 

 

3. Kotlin 버전을 알맞게 정한 후 OK를 클릭

 

 

 

 

4. 조금 기다리면 완료가 된다. 하지만 설정만 바꾼 것으로 다시 Convert java File to Kotlin File을 해줘야 한다.

 

 

 

 

5. 이 창이 뜨고 완료가 되면

 

 

 

 

 

6. [.java] 파일이 [.kt]파일로 바뀐 것을 볼 수 있다. 또한 내용도 kotlin에 맞게 일부 수정이 되었다.

(findViewById가 없어짐, View 객체 생성하는 것도 사라짐)

 

 

 

 


 

 

 

코틀린에 대해 더 자세히 알고 싶다면 

 

 

 

2020/08/28 - [대외 활동/CADI(개발A 보충스터디)] - [Kotlin vs Java] 코틀린 & 자바 비교

 

[Kotlin vs Java] 코틀린 & 자바 비교

Kotlin  vs  Java 코틀린은 JetBrains에서 만든 언어로 자바를 대체할 수 있는 정적 타입의 언어이다. 자바와 같이 JVM에서 동작하고 서로 100% 호환이 가능하다. 2017년 5월 18일 구글은 코틀린��

dev-seungwon.tistory.com

 

ListView와 RecyclerView 차이!

 

리스트 뷰(ListView)

 

(리스트 뷰 참고)

2020/09/17 - [대외 활동/CADI(개발A 보충스터디)] - 안드로이드(alertDialog,ListView,ArrayList&Arrayadapter) 공부하기!

 

안드로이드(alertDialog,ListView,ArrayList&Arrayadapter) 공부하기!

alertDialog -대화 상자를 말하는데 어떤 앱을 실행 시 경고 메세지나 특정한 정보를 알려주기 위한 다이얼로그를 말한다. handler를 이용해 특정한 시간이 지났을 때, 특정한 버튼을 눌렀을 때 구현��

dev-seungwon.tistory.com

 


1. 세로 방향으로 자식 뷰를 배치하여 보여줌
2. 공간이 부족하면 스크롤 가능
3. 화면을 터치하는 이벤트 처리 가능

 

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);

        final TextView  tv_select = (TextView)findViewById(R.id.tv_select);
         final ListView listView = (ListView)findViewById(R.id.listView);

         final List<String> list = new ArrayList<>();
        list.add("사과");
        list.add("배");
        list.add("딸기");
        list.add("감자");

        //adapter list관계
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1,list);
        listView.setAdapter(adapter);

 
    }

 

 

 

 

 

 


 

 

 

 

리사이클러 뷰(RecyclerView)

 

1. 한정된 수의 뷰를 유지함으로써 효율적인 스크롤 가능
2. 런타임에 요소가 변경되는 데이터가 있을경우 효과적으로 처리

3. Adpater,Viewholder,Layout관리자를 사용함

 

RecyclerView(Layoutmanager) -------> Adapter ---------->Dataset

 

 

주요 클래스

  • RecyclerView.Adpater : 데이터를 관리하고 뷰에 연결시키는 역할
  • RecyclerView.ViewHolder : 뷰를 담아두는 상자
  • LayoutManager : 뷰의 배치를 관리(Linear,Grid,StaggeredGrid)

 

class ViewHolder extends RecyclerView.ViewHolder{
// view.onClickListener 등록
}
public class Adapter extends RecyclerView.Adapter<ViewHolder>{

public ViewHolder onCreateViewHolder(){
// viewHolder를 만듬 
}

public void onBindViewHolder(){
 //생성된 viewHolder에 데이터를 Binding함
}

public int getItemCount(){
// 갯수 리턴
}


}

대표적으로 사용하는 5가지 ListView & Spinner

 

 

1.simple_list_item_1

  • 하나의 리스트에 하나의 내용만 보여줌

 

protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);

        final TextView  tv_select = (TextView)findViewById(R.id.tv_select);
         final ListView listView = (ListView)findViewById(R.id.listView);

        final ArrayList<String> list = new ArrayList<String>();

        list.add("사과");
        list.add("배");
        list.add("딸기");
        list.add("감자");


        //adapter list관계
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,list);
        listView.setAdapter(adapter);

 

 

 

 

2.simple_list_item_2

  • 하나의 리스트에 두개의 내용을 보여줌

 

    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);

        final TextView tv_select = (TextView) findViewById(R.id.tv_select);
        final ListView listView = (ListView) findViewById(R.id.listView);

        final ArrayList<HashMap<String, String>> list = new ArrayList<HashMap<String, String>>();
        HashMap<String, String> item;
     
        item = new HashMap<String, String>();
        item.put("item1", "사과");
        item.put("item2", "apple");
        list.add(item);
        
        item = new HashMap<String, String>();
        item.put("item1", "orange");
        item.put("item2", "오렌지");
        list.add(item);
       
        item = new HashMap<String, String>();
        item.put("item1", "딸기");
        item.put("item2", "strawberry");
        list.add(item);
        
        //adapter list관계
        SimpleAdapter simpleAdapter = new SimpleAdapter(this, list, android.R.layout.simple_list_item_2,
                new String[]{"item1", "item2"},
                new int[]{android.R.id.text1, android.R.id.text2});
        listView.setAdapter(simpleAdapter);

 

 

 

 

3.simple_list_item_single_choice

  • 항목 하나만 선택할 수 있다.

   protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);

        final TextView  tv_select = (TextView)findViewById(R.id.tv_select);
         final ListView listView = (ListView)findViewById(R.id.listView);

        final ArrayList<String> list = new ArrayList<String>();

        list.add("사과");
        list.add("배");
        list.add("딸기");
        list.add("감자");


        //adapter list관계
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_single_choice,list);
        listView.setAdapter(adapter);

 

 

 

 

 

4.simple_list_item_multiple_choice

  • 여러 항목을 선택할 수 있다.

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);

        final TextView  tv_select = (TextView)findViewById(R.id.tv_select);
         final ListView listView = (ListView)findViewById(R.id.listView);

        final ArrayList<String> list = new ArrayList<String>();

        list.add("사과");
        list.add("배");
        list.add("딸기");
        list.add("감자");


        //adapter list관계
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_list_item_multiple_choice,list);
        listView.setAdapter(adapter);

 

 

 

 

 

5.simple_spinner_item

  •  스피너란 리스트뷰나 그리드뷰와 달리 하나의 데이터만 보여주는 항목이다.

 

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_list_view);

        final TextView  tv_select = (TextView)findViewById(R.id.tv_select);
        final Spinner spinner = (Spinner)findViewById(R.id.spinner);
        final ArrayList<String> list = new ArrayList<String>();

        list.add("사과");
        list.add("배");
        list.add("딸기");
        list.add("감자");


        //adapter list관계
        ArrayAdapter<String> adapter = new ArrayAdapter<>(this,android.R.layout.simple_spinner_item,list);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spinner.setAdapter(adapter);

 

+ Recent posts