35,200원
다른 수강생들이 자주 물어보는 질문이 궁금하신가요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
실시간데이터베이스에 안떠요..6:15초
6분15초에서 하는 list를 누르면 파이어베이스에 뭔가 생기는데 저는 안생겨요..이렇게 생기지 않습니다.....package com.bokchi.mysolelife.contentsList import android.content.Intent import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.view.View import android.widget.Toast import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.bokchi.mysolelife.R import com.google.firebase.Firebase import com.google.firebase.database.database class ContentListActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_content_list) val database = Firebase.database val myRef = database.getReference("message") myRef.setValue("Hello, World!") val rv : RecyclerView = findViewById(R.id.rv) val items = ArrayList<ContentModel>() items.add(ContentModel("title1", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblYPPY%2Fbtq66v0S4wu%2FRmuhpkXUO4FOcrlOmVG4G1%2Fimg.png", "https://philosopher-chan.tistory.com/1235")) items.add(ContentModel("title2", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FznKK4%2Fbtq665AUWem%2FRUawPn5Wwb4cQ8BetEwN40%2Fimg.png", "https://philosopher-chan.tistory.com/1236")) items.add(ContentModel("title3", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbtig9C%2Fbtq65UGxyWI%2FPRBIGUKJ4rjMkI7KTGrxtK%2Fimg.png","https://philosopher-chan.tistory.com/1237")) items.add(ContentModel("title4", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcOYyBM%2Fbtq67Or43WW%2F17lZ3tKajnNwGPSCLtfnE1%2Fimg.png", "https://philosopher-chan.tistory.com/1238")) items.add(ContentModel("title5", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fekn5wI%2Fbtq66UlN4bC%2F8NEzlyot7HT4PcjbdYAINk%2Fimg.png", "https://philosopher-chan.tistory.com/1239")) items.add(ContentModel("title6", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F123LP%2Fbtq65qy4hAd%2F6dgpC13wgrdsnHigepoVT1%2Fimg.png", "https://philosopher-chan.tistory.com/1240")) items.add(ContentModel("title7", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fl2KC3%2Fbtq64lkUJIN%2FeSwUPyQOddzcj6OAkPKZuk%2Fimg.png", "https://philosopher-chan.tistory.com/1241")) items.add(ContentModel("title8", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmBh5u%2Fbtq651yYxop%2FX3idRXeJ0VQEoT1d6Hln30%2Fimg.png", "https://philosopher-chan.tistory.com/1242")) items.add(ContentModel("title9", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlOnja%2Fbtq69Tmp7X4%2FoUvdIEteFbq4Z0ZtgCd4p0%2Fimg.png", "https://philosopher-chan.tistory.com/1243")) items.add(ContentModel("title10", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNNrYR%2Fbtq64wsW5VN%2FqIaAsfmFtcvh4Bketug9m0%2Fimg.png", "https://philosopher-chan.tistory.com/1244")) items.add(ContentModel("title11", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FK917N%2Fbtq64SP5gxj%2FNzsfNAykamW7qv1hdusp1K%2Fimg.png", "https://philosopher-chan.tistory.com/1245")) items.add(ContentModel("title12", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FeEO4sy%2Fbtq69SgK8L3%2FttCUxYHx9aPNebNwkPcI21%2Fimg.png", "https://philosopher-chan.tistory.com/1246")) items.add(ContentModel("title13", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbdIKDG%2Fbtq64M96JFa%2FKcJiYgKuwKuP3fIyviXm90%2Fimg.png", "https://philosopher-chan.tistory.com/1247")) items.add(ContentModel("title14", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FFtY3t%2Fbtq65q6P4Zr%2FWe64GM8KzHAlGE3xQ2nDjk%2Fimg.png", "https://philosopher-chan.tistory.com/1249")) items.add(ContentModel("title15", "https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOtaMq%2Fbtq67OMpk4W%2FH1cd0mda3n2wNWgVL9Dqy0%2Fimg.png", "https://philosopher-chan.tistory.com/1250")) val rvAdapter = ContentRVAdapter(baseContext, items) rv.adapter = rvAdapter rv.layoutManager = GridLayoutManager(this, 2) rvAdapter.itemClick = object : ContentRVAdapter.ItemClick { override fun onClick(view: View, position: Int) { Toast.makeText(baseContext, items[position].title, Toast.LENGTH_LONG).show() val intent = Intent(this@ContentListActivity, ContentShowActivity::class.java) intent.putExtra("url", items[position].webUrl) startActivity(intent) } } } }메세지 나야되는거 적었습니다...그런데도 안떠요
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
rv이 할때 에러가...
package com.bokchi.mysolelife.contentsList import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import androidx.recyclerview.widget.RecyclerView import com.bokchi.mysolelife.R class ContentListActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_content_list) val rv : RecyclerView = findViewById(R.id.rv) //여기 R.id.rv이 할때 rv가 에러가 나요 val items = ArrayList<String>() items.add("a") items.add("b") items.add("c") val rvAdapter = ContentRVAdapter(items) rv.adapter = rvAdapter } }왜 에러가 나는걸까요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
emailArea가 안나와요..
package com.bokchi.mysolelife.auth import android.database.DatabaseUtils import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.widget.Toast import androidx.databinding.DataBindingUtil import com.bokchi.mysolelife.R import com.bokchi.mysolelife.databinding.ActivityIntroBinding import com.google.firebase.Firebase import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.auth class JoinActivity : AppCompatActivity() { private lateinit var binding: ActivityIntroBinding private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) auth = Firebase.auth binding = DataBindingUtil.setContentView(this, R.layout.activity_join) binding.joinBtn.setOnClickListener { val email = binding.emailArea } // auth.createUserWithEmailAndPassword("abc@abc.com", "12341234") // .addOnCompleteListener(this) { task -> // if (task.isSuccessful) { // Toast.makeText(this, "성공", Toast.LENGTH_LONG).show() // } else { // Toast.makeText(this, "실패", Toast.LENGTH_LONG).show() // } // } } }여기 보면 선생님과 똑같이 했는데 emailArea을 이제 칠때 빨간색으로 뜨면서 안되요...<?xml version="1.0" encoding="utf-8"?> <layout> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".auth.JoinActivity" android:orientation="vertical"> <LinearLayout android:layout_width="match_parent" android:background="@color/mainColor" android:layout_height="150dp"> <TextView android:text="회원가입" android:gravity="center" android:textStyle="bold" android:textColor="@color/black" android:textSize="20sp" android:layout_width="match_parent" android:layout_height="50dp"/> </LinearLayout> <LinearLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginTop="50dp" android:orientation="vertical"> <EditText android:id="@+id/emailArea" android:layout_width="match_parent" android:layout_height="50dp" android:hint="email" style="@style/AuthEditText"/> <LinearLayout android:layout_width="match_parent" android:background="#999999" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="0.5dp"/> <EditText android:id="@+id/passwordArea" android:layout_width="match_parent" android:layout_height="50dp" android:inputType="textPassword" android:hint="password" style="@style/AuthEditText"/> <LinearLayout android:layout_width="match_parent" android:background="#999999" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="0.5dp"/> <EditText android:id="@+id/passwordArea2" android:layout_width="match_parent" android:layout_height="50dp" android:inputType="textPassword" android:hint="password check" style="@style/AuthEditText"/> <LinearLayout android:layout_width="match_parent" android:background="#999999" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_height="0.5dp"/> <Button android:id="@+id/joinBtn" android:layout_margin="20dp" android:background="@drawable/background_radius_yellow" android:text="회원가입하기" android:layout_width="match_parent" android:layout_height="50dp"/> </LinearLayout> </LinearLayout> </layout> 여기 ID emailArea 적어져 있습니다 그런데 왜(?) 이런 오류가 뜨는 것일가요?? 알려주세요...ㅠㅠ
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
실행하면 바로 앱이 안떠요..
이제 처음 선생님도 앱을 실행했을때 ok라고 뜨 잖아요 그런데 저는 실행도 안되요...그래서 다시 처음부터 했는데 되지 않아요.......ㅠㅠ
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
게시글/댓글 작성 후 리스트뷰에 즉시 반영이 안됩니다
안녕하세요 강사님좋은 강의 제공해주셔서 감사합니다.제목 그대로의 문제가 있어서 질문 남깁니다.BoardWrite액티비티에서 게시글 작성 후 등록 버튼을 누르고 finish()를 통해 프래그먼트로 빠져나오는 경우,그리고 BoardInside액티비티에서 댓글을 등록한 경우리스트뷰에 결과가 즉시 반영되지 않는 것 같습니다.다른 액티비티 혹은 프래그먼트로 이동 후 돌아오면 반영되긴 하지만요...강사님 영상을 보니 게시글/댓글 모두 리스트뷰에 즉시 반영되는 것 같은데...아, 차이점이 있다면 저는 binding을 쓰지 않았습니다. 혹시 이 탓일까요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
RecyclerView 생성 관련 질문 있습니다.
RecyclerView 를 만들어 , 아이템목록을 HomeFragment 화면에 띄우게 하려면, 어떻게 해야할까요? HomeFragment.xml에 recyclerview 를 추가하고 , ContentListActivity의 내용을 HomeFragment에 옮기고 , Adapter 연결또한 HomeFragment 와 연결해주면 가능한가요? 직접 해보니 잘 안돼서 질문드립니다.
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
게시글 요소에 따른 순위 비교
안녕하세요!강의를 듣고 추가적으로 게시글을 기준에 따라 순위를 나눠 정렬하고 싶은데 어떤 방식으로 접근하면 좋을까요?댓글 수를 카운트하고, 각 게시글 아이템 요소들을 비교해서 정렬을 하고 싶은데 요소 비교를 어떻게 해야할지 감이 안잡힙니다.예를 들어 리스트뷰에서 댓글순으로 정렬을 한다면, 어떻게 하면 좋을까요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
리스트뷰로 받아온 화면에 이미지 추가하기
삭제된 글입니다
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
firebase 오류
안드로이드 스튜디오 dolphin 버전입니다
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
firebase auth import 오류
안녕하세요! 강의 수강하고 있는 학생입니다. 무조건 arctic fox 버전을 사용해야지 auth import가 가능한걸까요?dolphin 버전 사용하고 있는데package com.example.fapplication import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import com.google.firebase.auth.FirebaseAuth import com.google.firebase.ktx.Firebase class JoinActivity : AppCompatActivity() { private lateinit var auth: FirebaseAuth override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_join) auth = Firebase.auth } }마지막 firebase.auth의 auth가 import가 안되서 질문드립니다plugins { id 'com.android.application' version '7.3.0' apply false id 'com.android.library' version '7.3.0' apply false id 'org.jetbrains.kotlin.android' version '1.7.10' apply false id("com.google.gms.google-services") version "4.4.0" apply false }plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id("com.google.gms.google-services") } android { namespace 'com.example.fapplication' compileSdk 32 viewBinding{ enabled true } defaultConfig { applicationId "com.example.fapplication" minSdk 24 targetSdk 32 versionCode 1 versionName "1.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' } } compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' } dataBinding { enabled true } } dependencies { implementation("com.google.firebase:firebase-analytics-ktx") implementation(platform("com.google.firebase:firebase-bom:32.3.1")) implementation 'androidx.core:core-ktx:1.7.0' implementation 'androidx.appcompat:appcompat:1.4.1' implementation 'com.google.android.material:material:1.5.0' implementation 'androidx.constraintlayout:constraintlayout:2.1.3' testImplementation 'junit:junit:4.13.2' androidTestImplementation 'androidx.test.ext:junit:1.1.3' androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0' implementation("com.google.firebase:firebase-auth-ktx") }
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
firebase sdk추가시
firebase sdk 추가하려는데 선생님이 추가하시는거는 buildscript인데 제 파이어베이스 사이트에는 plugin 이예요 ㅜㅜ
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스에 닉네임도 저장할수있나요?
강의 들으면서 더 나아가 게시글에 작성자 닉네임을 넣고싶은데, 파이어베이스 데이터 베이스에 닉네임을 어떻게 넣는지 궁금해요. 아이디 비번은 파이어베이스 사이트에 있는데 닉네임을 어떻게 넣어야할지 모르겠어요ㅠㅠ
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
디바이스연결시 이미지 안뜸
가상디바이스에 연결했을때는 콘텐츠 리스트에 있는 콘텐츠들의 사진이 뜨는데 디바이스를 직접 연결했을때는 이미지가 나오지 않습니다. url 문제인가요? 혹시 url 문제라면 파이어베이스의 이미지 부분에 어떤것을 넣어야하나요?
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
어떻게 저것만 작성했는데 동적으로 삭제가 되는지 이해가 안가요
'북마크 동적으로 삭제'강의에서bookmarkIdList.remove(key)만 추가했더니 ui상에서 지워지는지 이해가 안갑니다! if(bookmarkIdList.contains(key)) { contentRvItemBinding.bookmarkArea.setImageResource(R.drawable.bookmark_color) } else { contentRvItemBinding.bookmarkArea.setImageResource(R.drawable.bookmark_white) } // setOnClickListener가 여기 아래에 있고 색깔 칠하는 로직은 그위에 있음 contentRvItemBinding.bookmarkArea.setOnClickListener { if(bookmarkIdList.contains(key)) { bookmarkIdList.remove(key) // 북마크 동적으로 삭제하는코드 위의 코드에서 bookmarkIdList에 따라 색깔을 칠할지 안칠할지 결정하는 코드는 아래 코드이고 if(bookmarkIdList.contains(key)) { contentRvItemBinding.bookmarkArea.setImageResource(R.drawable.bookmark_color) } else { contentRvItemBinding.bookmarkArea.setImageResource(R.drawable.bookmark_white) } setOnClickListener 밖에 있습니다. 근데 북마크버튼을 클릭을 하면 저코드가 실행되어서 색깔을 칠해주거나 없애줍니다.제 생각으로는 북마크를 클릭하면 setOnClickListener안에서만 코드가 돌아야되는거 아닌가 생각했는데 왜 밖에 있는 코드가 실행되는지 이해가 안갑니다!!
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
realtimeDB에서 북마크 리스트 만들때 key를 똑같이 하는이유
'북마크 데이터 저장' 강의에서 북마크 데이터를 저장할때 키값을 기존 contents에 있는 key값으로 넣어주는 이유가 있을까요?저번 왕초보편에서는 그냥 bookmark의 child로 유저의uid만 넣고 key값은 신경을 안썼던거 같은데 이번에는 북마크할 컨텐츠의 key값도 받아와서 그값으로 저장을 하시길래 그렇게 하면 어떤 장점들이 있는지 궁금합니다!!<왕초보편 방식>contentRvItemBinding.bookmarkArea.setOnClickListener { val myBookmarkRef = database.getReference("bookmark") val title = contentModel.title val imageTitle = contentModel.imageTitle val url = contentModel.url val model = ContentModel(title, imageTitle, url) myBookmarkRef .child(Firebase.auth.currentUser!!.uid) .push() .setValue(model) Toast.makeText(context, contentModel.title, Toast.LENGTH_SHORT).show() } <현재>contentRvItemBinding.bookmarkArea.setOnClickListener { FBRef.bookmarkRef .child(FBAuth.getUid()) .child(key) .push() .setValue("good") Toast.makeText(context, "${contentRvItemBinding.textArea.text} 북마크 등록", Toast.LENGTH_SHORT).show() }
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
오류가 뜨는데 해결 방법이 있을까요?
(사진)
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
Intro layout에서 RelativeLayout이 아닌 ConstraintLayout을 쓰는 이유
<ConstraintLayout android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".auth.IntroActivity"> <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent"> </RelativeLayout> </ConstraintLayout>결국 실질적 최상단 레이아웃은 RelativeLayout인데 가장 큰테두리를 ConstraintLayout로 쓰는 이유가 궁금합니다!
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
상태바 색깔변경 하는법
강의에서는 이것만 바꾸라고 되어있는데<item name="colorPrimaryVariant">@color/main_yellow</item>애초에 'statusBarColor'가 저처럼 없는분들은 이걸 추가하셔야합니다!! <item name="android:statusBarColor" tools:targetApi="l">@color/main_yellow</item>그래서 총 코드는 이렇게 됩니다! 참고하세여<resources xmlns:tools="http://schemas.android.com/tools"> <!-- Base application theme. --> <style name="Base.Theme.MySoloLife" parent="Theme.Material3.DayNight.NoActionBar"> <!-- Customize your light theme here. --> <item name="colorPrimaryVariant">@color/main_yellow</item> <item name="android:statusBarColor" tools:targetApi="l">@color/main_yellow</item> <!-- <item name="colorPrimary">@color/my_light_primary</item> --> </style> <style name="Theme.MySoloLife" parent="Base.Theme.MySoloLife" /> </resources>
- 미해결[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
파이어베이스 연동 부분에 auth가 import가 안됩니다.(깃허브 첨부)
파이어베이스 설정 전까지는 잘 따라왔는데 Firebase SDK부분에서 코드가 다르고 또 개발 문서에서 예시코드가 이제는 제공되지 않더라구요 깃허브는 https://github.com/wonttan/Mobile_Programming 입니다
- 해결됨[초급편] 안드로이드 커뮤니티 앱 만들기(Android Kotlin)
버튼을 누르면 회원가입이 되는 이유
안녕하세요 강사님! 강의 잘 보고 있습니다:)auth.createUserWithEmailAndPassword("abc@abc.com", "abcabc") .addOnCompleteListener(this) { task -> if (task.isSuccessful) { Toast.makeText(this, "성공", Toast.LENGTH_SHORT).show() } else { Toast.makeText(this, "실패", Toast.LENGTH_SHORT).show() } } 3:00부분에서 코드상에 버튼 id를 기입한 것도 아닌데 어떻게 회원가입이 되는 것인지 이유가 궁금해서 질문 드립니다!