반응형 분류 전체보기108 [안드로이드] RecyclerView, ListView에서 item이 클릭이 안될 때 : descendantFocusability ListView Item 내에 버튼을 다음과 같이 구현했다. 여기서 가족, 고등학교, 동아리 등에 해당하는 것이 버튼이다. 구현 원하는 방향 ListViewItem을 클릭했을 때는 상세페이지로 그룹명(버튼)을 클릭했을 때는 검색 기능으로 이동하려 한다. 결론 . ListViewItemClickListner와 버튼 클릭 이벤트를 모두 사용하고 싶다면 ListViewItem Layout의 descendantfocusability를 blocksDescendants로 설정한다. android:descendantFocusability="blocksDescendants" 버튼이 아닌 곳을 클릭했을 때는 listView Item의 클릭 이벤트(B)가 실행됨.. button 클릭 시 A기능 실행됨. 또다른 해결책 Bu.. 안드로이드 2022. 10. 3. [안드로이드] ListView 구현하기(Kotlin) 안드로이드에서 리스트 뷰 대신, Recycler뷰를 사용하기를 권장한다고 한다. 일단 Recycler뷰를 구현하기 전 단계로 ListView를 구현해보자. ListView를 구현하기 전에 먼저 Adapter라는게 뭔지 한 번 알아보자. - Adapter : Data를 View로! 어댑터는 위 그림에서와 같이 Data를 UI 상에 표현하는 역할을 한다. 하나의 data를 하나의 ListView Item으로 변환하는 것이다. - ListView 구현 준비물 1. ListView를 포함하고 있는 Layout(xml) list View에 id만 잘 붙여주면 되겠다. 2. listView item Layout(xml파일) 더보기 3. Adapter 아래 코드가 핵심이다. getView에서 실제 보여지는 List의.. 안드로이드 2022. 10. 2. [안드로이드] Bottom Navigation View 숨기기/ 프래그먼트에서 Activity View Control하기(Kotlin) Bottom Navigation으로 Activity를 구성 문제점 : 로그인 Fragment는 bottom Navigation이 없어야 한다. 1. Activity에 NavigationView를 안보이게 하는 메서드를 추가한다.(hideBottomNavigation) class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) binding = ActivityMainBinding.inflate(layoutInflater) setContentVie.. 안드로이드 2022. 9. 22. [안드로이드] left,right vs start, end - RTL Start & End 해당 개념은 API Level 17에서 안드로이드 4.2버전의 RTL layout에 추가되어 있다고 한다. *RTL : Right To Left 한국어, 영어, 일본어와 같은 언어는 왼쪽부터 읽기 때문에 start=left end =right. (히브리어, 아랍어 등) 오른쪽부터 읽는 언어 같은경우 start= right end = left. Insight target층이 한국, 미국, 일본 등 왼쪽부터 읽는 언어이면 left, right를 그대로 사용해도 좋을 것 같다. 하지만, 아랍권까지 확장할 야망이 있다면 start, end로 사용해도 좋을 듯 하다.. LayoutDirection을 통해 horizontal Layout같은 경우 좌우 방향 지정이 가능하다. LayoutDire.. 안드로이드 2022. 9. 21. [Java] 스트림 - Stream : 효율적인 데이터 다루기! 문제점 합계, 평균 등 데이터를 집계할 때, for 또는 Iterator를 활용해서 코드를 작성해왔다. 이러한 코드는 가독성이 떨어지고 번거롭다...(매우...같은 코드 짜다보면 너무 답답..) 또한, 데이터 소스마다 다른 방식으로 다뤄야 한다. 이러한 문제점!을 해결하기 위해 등장한 것이 Stream이다. → 데이터 소스마다 같은 방식으로 다룰 수 있도록 데이터를 추상화하고, 자주 사용되는 메서드를 정의해 놓았다. sum, average, min, max 등등 특징 : SQL의 쿼리 같은 느낌 - 스트림은 데이터 소스를 변경하지 않는다. abc.stream().~~~해도 abc라는 데이터 소스는 아무런 영향을 받지 않는다. stream은 읽기만 하는 것이다. - 스트림은 일회용이다. stream을 생성.. Java 2022. 9. 18. [Java] Optional<T>, Optional 타입 : 래퍼 클래스, 코드의 복잡성을 낮추다. Optional 는 지네릭 클래스로 T타입의 객체를 감싸는 래퍼 클래스이다. Optional 타입에는 모든 타입의 참조변수를 담을 수 있다. public final class Optional { private final T value; // T 타입의 참조변수 ... } } * java.util.Optional은JDK 1.8부터 추가됨. 장점 : Optional 클래스 사용 시 널 체크를 내부에서 처리하여 코드의 복잡도를 낮출 수 있다. isNull, nonNull, requireNonNull()과 같은 메서드를 통해서! → NullPointerException이 발생하지 않는 코드작성이 가능하다는 이야기이다! 관련 Method - Optional객체 생성 Optional.of(T) Optional.of.. Java 2022. 9. 4. [Java] Wrapper 클래스 : 기본 타입의 데이터를 객체로 취급하다.( 오토박싱, 오토언박싱) Wrapper(포장) 객체 : 기본 타입의 데이터를 포장하기 때문에 붙여진 이름이다. 래퍼 클래스가 사용되는 이유는 기본데이터 타입이 아닌 Object가 필요한 경우가 있기 때문이다. 기본 타입이 아닌 Object가 필요한 경우. 1. Generic에서 타입 파라미터로 참조타입(Reference Type)만 정할 수 있다. int, short, double 등 기본 타입(primitive type)은 올 수 없다. → 이와 같은 맥락으로 Collection 프레임 워크는 제네릭을 사용하기 때문에 객체 형태의 데이터만 파라미터로 올 수 있다. 그래서 우리가 ArrayList, ArrayList과 같이 사용하는 것이다. 2. 기본 자료형의 값을 문자열로 변환하는 경우, 혹은 반대의 경우 Double d = .. Java 2022. 9. 3. [Java] 람다식 - Lambda Expression Thread에서 Runnable을 접하면서 lambda식 형태를 처음 봤었다. 이후 안드로이드 UI, 파이썬 등을 하면서 종종 봤었는데, 사용하는 방법만 알고 넘어왔기 때문에 이번 글을 통해 정리를 하려한다. 람다식의 도입 람다식의 도입으로, 자바는 객체지향언어인 동시에 함수형 언어가 되었다. 메서드를 람다식으로 표현하면 메서드의 이름과 반환값이 없어지기 때문에, 람다식을 익명함수라고도 한다. 함수형 인터페이스 자바에서 모든 메서드는 클래스에 포함되어야 한다. 람다식은 익명 클래스의 객체라 보면 된다. 람다식은 어떻게 불러와서 사용할 수 있을까? 타입이 있어야 하지 않을까? 그 타입을 함수형 인터페이스라 보면 편하다.(조금 더 내리면 좀 더 자세한 설명 있음) public interface MyFunct.. Java 2022. 8. 29. [Java] BigDecimal - Java에서 정밀한 숫자 표현하기 문제점 : Java 언어에서는 숫자를 표현하기 위해 int, long, double, float 등의 기본형을 사용한다. 이러한 기본형 중에 가장 많이 사용 되는 float, double형은 우리가 원하지 않는 결과를 보여주기도 한다. double a = 10.0000001; double b = 7.00010000; System.out.println(a + b); --> 결과 : 17.000100099999997 double과 float의 특징 이진 부동 소수점 연산에 사용되며, 넓은 범위의 수를 빠르게 정밀한 근사치를 구할 수 있도록 설계 되었다. 그 말인 즉, 정밀한 계산과는 맞지 않는다. 이는 이진수를 통해서 0.1과 10의 음의 거듭제곱수를 표현할 수 없기 때문에 발생한다. 10진수로 0.1은 2.. Java 2022. 8. 24. [Java] 문자열 split 할 때 마침표(.) : split(".") → split("//.") split()함수는 인자로, regex 정규식을 받는다. (이걸 몰랐네 ㄷ..ㄷ) "."은 정규식에서 아래와 같은 의미를 가지기 때문에 split에서 사용 시 원하는 결과를 얻을 수 없다. . matches any character (except for line terminators) 어떤 문자와도 매칭이 된다.(라인 터미네이터 빼고) 아래와 같이 프린트를 해보면 아무런 결과도 출력되지 않는다. t는 길이가 0 인 String 배열인 셈. public static void main(String[] args) { String path = "A.B.C"; String[] t = path.split("."); for (String a : t) { System.out.println(a); } } 포인트 : "... Java 2022. 8. 2. [Java] 폴더 생성 - File mkdir()/ mkdirs() 안녕하세요. 펄이라고 합니다. 원하는 폴더에 파일을 생성하는 기능을 구현하는 도중, 폴더 경로가 없을 경우에는 파일이 생성되지 않는 다는 것을 알게되었습니다. 이런 상황에서는 미리 폴더를 생성해야 하는데, mkdir을 쓰니 폴더가 생성되지 않았습니다. 상위 폴더가 있을 경우 폴더 생성 - mkdir() mkdir()은 상위 폴더가 있는 경우에만 폴더 생성이 가능합니다. 예를 들어 C:₩users₩a₩b폴더 생성을 원하는 경우 C:₩users₩a폴더가 이미 생성되어 있어야 합니다. import java.io.File; public class testMain { public static void main(String[] args) { File f = new File("C:\\test\\test"); // 생.. Java 2022. 6. 14. [Java 객체 지향 디자인 패턴] 10. 데커레이터 패턴 - 여러 기능의 조합 상속을 통한 기능의 확장은 각 기능별로 클래스를 추가해야 한다는 단점이 있다. -> 각 추가 기능 별로 개별적인 클래스를 설계하고 기능을 조합할 때 각 클래스의 객체 조합을 이용하여 기능의 확장을 하도록 한다. 정의 데커레이터 패턴은 기본 기능에 추가할 수 있는 기능의 종류가 많은 경우게 각 추가 기능을 Decorator 클래스로 정의한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계하는 방식이다. 데커레이터 패턴은 기본 기능에 추가할 수 있는 많은 종류의 부가 기능에서 파생되는 다양한 조합을 동적으로 구현할 수 있는 패턴이다. 여기서 핵심은 컴포지션 관계에 있다. 주로 생성자를 통해서 component를 이어 받는데, 이를 통해서 기본 객체에 살을 덧붙여 갈 수 있다. - Co.. Java/Java 객체지향 디자인 패턴 2022. 5. 10. 이전 1 ··· 5 6 7 8 9 다음 반응형