수강이 제한됩니다.
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
TextInputLayout keeps stopping
TextWatcher를 상속받는 object를 변수에 넣고 완료한 뒤 애뮬레이터에서 앱을 실행하고 textInputLayout에 무언가를 입력하려고 하면 TextInputLayout keeps stopping 이라는 오류가 뜨고 앱 실행이 중지 됩니다. 전 강의인 EditText 부분에서도 EditText부분에 입력할 때 이러한 오류가 나타났는데 원인이 무엇인지 알 수 있을까요?
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
android studio 강의를 들으면서 dependencies에 관하여 궁금해진게 있습니다
1. gradle이 2개가 있는데 2개의 정확한 차이점이 뭔지 좀 궁금합니다. 2. gradle 안에 각 dependencies가 있는데 gradle(Project) dependencies는 classpath가 붙고 gradle(Module) dependencies는 implementation가 붙는데 classpath와 implementation의 차이를 알려주시면 감사합니다. classpath implementation
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
리스너 함수에서 when 사용 질문
안녕하세요. 리스너 함수에서 문득 궁금한게 있어 문의드립니다. val listener = object: RatingBar.OnRatingBarChangeListener { override fun onRatingChanged(ratingBar: RatingBar?, rating: Float, fromUser: Boolean) { when(ratingBar?.id){ R.id.ratingBar2 -> { textView.text = "Rating 2 : $rating\n" if (fromUser) textView.append("사용자에 의해 설정\n") else textView.append("코드에 의해 설정\n") } R.id.ratingBar3 -> { textView2.text = "Rating 3 : $rating\n" if (fromUser) textView2.append("사용자에 의해 설정\n") else textView2.append("코드에 의해 설정\n") } } } } 위와 같이 when(ratingBar?.id) 를 사용하고 R.id.ratingBar2 이런식으로 일치하는게 있는지 확인하는데 아래와 같이 사용해도 동일하게 작동하더라고요. val listener = object: RatingBar.OnRatingBarChangeListener { override fun onRatingChanged(rb: RatingBar?, rating: Float, fromUser: Boolean) { when(rb){ ratingBar2 -> { textView.text = "Rating 2 : $rating\n" if (fromUser) textView.append("사용자에 의해 설정\n") else textView.append("코드에 의해 설정\n") } ratingBar3 -> { textView2.text = "Rating 3 : $rating\n" if (fromUser) textView2.append("사용자에 의해 설정\n") else textView2.append("코드에 의해 설정\n") } } } } 아직 kotlin에 대한 이해도가 부족해서 그런 걸 수도 있는데 when(rb)를 사용해서 객체들과 직접 비교하는게 더 간결해보이는데 R.id에서 id를 가져와 비교하는 이유가 뭔지 궁금합니다. 성능이라던가 다른 요인이 있는 걸까요?
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
자동완성 파라미터 질문
안녕하세요. 자동완성 파라미터에 대해 문의드립니다. 강사님의 onCheckedChanged 자동완성시 아래와 같고 저는 아래와 같습니다. 왜 파라미터 이름이 저는 p0, p1 이런식으로 배정될 까요?? 안드로이드 스튜디오 버전은 4.1.1 입니다. 감사합니다.
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
45. RecyclerView의 Adapter에서 viewBinding 문의
//ViewHolder 클래스inner class ViewHolderClass(itemView: View) : RecyclerView.ViewHolder(itemView), View.OnClickListener { //val rowImageView = itemView.findViewById<ImageView>(R.id.rowImageView) //val rowTextView = itemView.findViewById<TextView>(R.id.rowTextView) var rowView = itemView as RowBinding val rowImageView = rowView.rowImageView val rowTextView = rowView.rowTextView override fun onClick(v: View?) { binding.textView.text = data1[adapterPosition] }}//항목 구성을 위해 사용할 ViewHolder 객체가 필요할 때 호출되는 메소드override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolderClass { //val itemView = layoutInflater.inflate(R.layout.row, null) val itemView = RowBinding.inflate(layoutInflater) val view = itemView.root val holder = ViewHolderClass(view) view.setOnClickListener(holder) return holder}viewBinding으로 Adapter를 변경했는데 앱이 강제 종료 됩니다. 에러 메시지 java.lang.ClassCastException: android.widget.LinearLayout cannot be cast to com.example.recyclerview.databinding.RowBinding 소스 : https://github.com/pulmuone/RecyclerView
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
42강 MultiAutoCompleteTextView
setOnItemClickListener 에서 선택 된 index가화면에 보여진 것중에서 순번이 반환 되고 있습니다. 결국 data1의 정확한 위치를 잡지 못합니다. 해결 방법이 있을까요?
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
41강 AutoCompleteTextView 11:20
디버그 해보니 android.widget.DropDownListView으로 들어 오고 있는데 AutoCompleteTextView으로 캐스팅 해도 안되네요.
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
CustomAdapter 강사님 소스를 viewBinding으로
https://github.com/pulmuone/CustomAdapter adapter부분을 viewBinding으로 해봤습니다. rowView.run {} 이 기능(?)은 vb.net 에서 봤는데 코틀린이 단순화 하려고 많이 노력했네요.
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
ScrollChangeListener관련
강의에는 scrollX, oldScrollX 이렇게 파라미터가 되어 있어서 보기 편한데 최신 버전에는 아래와 같이 되서 불편합니다. 자동 생성된 파라미터를 이전 버전처럼 생성되게 할 수 있나요? val listener1 = object : View.OnScrollChangeListener { override fun onScrollChange(p0: View?, p1: Int, p2: Int, p3: Int, p4: Int) { when(p0?.id) { R.id.scroll1 -> { } } }}
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
왜 익명 클래스를 이용하여 리스너 등을 정의하는건가요?
그냥 단순 궁금증입니다. 이 강의에서는 모든 리스너를 익명 클래스/메서드로 정의하여 지정하는데요 인터넷에서 코틀린에 대해 정보를 찾아보면 다른 사람들은 대부분 클래스를 그냥 정의하거나 해서 리스너를 정의하더군요 굳이 익명 클래스로 정의하는 이유가 있나요? 예를 들면 이러이러한 장점이 있다 이런거요
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
View cannot be cast to androidx.viewpager.widget.ViewPager
제목과 같은 에러가 뜨네요.. 일단 코딩 자체는 선생님과 똑같이 했습니다. 문제가 발생하는 곳은 adapter를 지정하는 부분인데요... 보아하니 처음에 ArrayList로 <View>를 지정해주는데 여기 있는 View가 ViewPager를 호환하지 않는거 같은 느낌이네요... 아래는 제가 코딩한 MainActiviy.kt입니다. ps. 그리고 뷰페이저2에 대한 강의도 있나요? package com.example.viewpager import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.view.ViewGroup import androidx.viewpager.widget.PagerAdapter import kotlinx.android.synthetic.main.activity_main.* class MainActivity : AppCompatActivity() { // 1. ViewPater를 통해 보여줄 View를 담을 List val viewList = ArrayList<View>() override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) // 2. layoutInflater.inflate : 레이아웃을 하나의 뷰로 만들어준다 val view1 = layoutInflater.inflate(R.layout.view1, null) val view2 = layoutInflater.inflate(R.layout.view2, null) val view3 = layoutInflater.inflate(R.layout.view3, null) val view4 = layoutInflater.inflate(R.layout.view1, null) val view5 = layoutInflater.inflate(R.layout.view2, null) val view6 = layoutInflater.inflate(R.layout.view3, null) // 3. ArrayList에 뷰를 하나씩 추가 viewList.add(view1) viewList.add(view2) viewList.add(view3) viewList.add(view4) viewList.add(view5) viewList.add(view6) val adapter1 = object : PagerAdapter(){ // 4. ViewPager가 보여줄 view의 갯수 override fun getCount(): Int { return viewList.size } // 5. ViewPager가 보여줄 view를 반환 override fun instantiateItem(container: ViewGroup, position: Int): Any { pager1.addView(viewList[position]) return viewList[position] } // 6. instantiateItem이 반환한 객체를 화면으로 사용할지? 말지? override fun isViewFromObject(view: View, obj: Any): Boolean { // 7. obj에는 instantiateItem에서 반환 받은 뷰가 들어감 // view : 화면에 표시할 뷰 = obj 즉, instantiateItem에 지정한 뷰를 그대로 화면에 표시 return view == obj } override fun destroyItem(container: ViewGroup, position: Int, obj: Any) { pager1.removeView(obj as View) } } pager1.adapter = adapter1 } }
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
Part1. 15강 GridLayout
GridLayout을 개선해서 나온게 TableLayout인가요? TableLayout은 Row Span 지원 안하는데 개선된 Layout인지 궁금합니다.
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
id 'kotlin-android-extensions'
자동으로 view의 id를 import 기능을 사용하기 위해서는 id 'kotlin-android-extensions'를 gradle에 추가해야된다는 것을 알았습니다. 자바로 안드로이드를 공부한적이 없었다면 엄청 당황스러웠을거 같은데 이 강의에서는 이거 설정하는 방법을 가르쳐주지도 않고 바로 사용하는 것만 보여주네요 ㅡㅡ 아무튼 이 기능을 새로운 프로젝트 시작시 자동으로 넣어주는 설정은 어떻게 하나요?? 즉, gradle에 id 'kotlin-android-extensions'를 자동으로 삽입하는 기능을 묻고있는겁니다.
- 미해결윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
뭔가 프로젝트를 만드는 강의는 따로 없나요?
현재 part1~3까지 전부 들으려고 하는 수강생입니다 강의를 듣다보니 너무 기능적인 내용만 나와서 의문이 들어 질문을 올립니다. part1~3의 목차를 보니까 프로젝트를 만들면서 배우기보단 코틀린을 이용하여 안드로이드 기능을 사용하는 방법을 하나씩 가르쳐주시는거 같은데요. 이를 이용하여 프로젝트를 만드는 강의는 따로 있는건가요? 또한 part4를 만드시는중이라고 들었는데 여기에 대해서도 질문이 있습니다. 1. par4는 어떠한 내용을 담을 생각이신가요? 2. part4가 코틀린을 이용한 안드로이드 강의의 마지막인가요?
- 윤재성의 Kotlin 기반 안드로이드 앱 개발 Part1 - UI Programming
안드로이드 스튜디오 4.0 버전 공지입니다.
삭제된 글입니다