RecyclerView 7분중 GroupieViewHolder 자동입력과 UserItem을 Implement Members하는법을 모르겠어요.
407
35 asked
1:1채팅 만들기(Android + Kotlin + Firebase)
RecyclerView 7분
ChatListActivity.kt
package com.example.chatting_video
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_chat_list.*
class ChatListActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_chat_list)
val adapter = GroupAdapter<GroupieViewHolder>
오류코드
e: C:\Users\MS\AndroidStudioProjects\chatting_video\app\src\main\java\com\example\chatting_video\ChatListActivity.kt: (12, 23): Unresolved reference: GroupAdapter
LoginActivity
package com.example.chatting_video
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import com.example.chatting_video.R
import com.google.firebase.auth.FirebaseAuth
import kotlinx.android.synthetic.main.activity_login.*
class LoginActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
private val TAG = LoginActivity::class.java.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)
auth = FirebaseAuth.getInstance()
login_button.setOnClickListener {
val email = login_email.text.toString()
val password = login_password.text.toString()
auth.signInWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "signInWithEmail:success")
//데이터베이스에 유저 정보 넣어줘야 합니다.
val intent = Intent(this, ChatListActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
} else {
// If sign in fails, display a message to the user.
Log.w(TAG, "signInWithEmail:failure", task.exception)
}
}
}
}
}
MainActivity
package com.example.chatting_video
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import com.google.firebase.auth.FirebaseAuth
import kotlinx.android.synthetic.main.activity_main.*
import android.util.Log as Log
import kotlinx.android.synthetic.main.activity_main.login_button_main as login_button_main
class MainActivity : AppCompatActivity() {
private lateinit var auth: FirebaseAuth
// ...
// Initialize Firebase Auth
private val TAG: String = MainActivity::class.java.simpleName
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
auth = FirebaseAuth.getInstance()
join_button.setOnClickListener {
val user = hashMapOf(
"first" to "Ada",
"last" to "Lovelace",
"born" to 1815
)
val email = email_area.text.toString()
val password = password_area.text.toString()
auth.createUserWithEmailAndPassword(email, password)
.addOnCompleteListener(this) { task ->
if (task.isSuccessful) {
// Sign in success, update UI with the signed-in user's information
Log.d(TAG, "성공")
val uid = FirebaseAuth.getInstance().uid
// Create a new user with a first and last name
val user = hashMapOf(
"first" to "Ada",
"last" to "Lovelace",
"born" to 1815
)
// Add a new document with a generated ID
val intent = Intent(this, ChatListActivity::class.java)
intent.flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
startActivity(intent)
} else {
Log.d(TAG, "실패", task.exception)
}
}
}
login_button_main.setOnClickListener {
val intent = Intent(this, LoginActivity::class.java)
startActivity(intent)
}
}
}
여기선 성공 실패 코드를 지운게 있어요. 넣으면 오류가 걸려서 지웠어요.
// Add a new document with a generated ID
db.collection("users")
.add(user)
.addOnSuccessListener { documentReference ->
Log.d(TAG, "DocumentSnapshot added with ID: ${documentReference.id}")
}
.addOnFailureListener { e ->
Log.w(TAG, "Error adding document", e)
}
db.이부분이 빨간색이 되었어요. 어떻게 해야하나요?
User
ackage com.example.chatting_video
class User(val uid : String, val username : String)
UserItem.kt
package Model
import android.content.ClipData
class UserItem : ClipData.Item<GroupieViewHolder>(){
}
여기에서는 GroupieViewHolder라는 명령어가 자동입력이 되지 않고 빨간색이 뜹니다.
activity_chat_list.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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:id="@+id/recyclerview_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ChatListActivity">
<androidx.recyclerview.widget.RecyclerView
android:layout_width="344dp"
android:layout_height="572dp"
android:layout_marginStart="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="40dp"
android:layout_marginEnd="20dp"
android:layout_marginRight="20dp"
android:layout_marginBottom="40dp"
app:layoutManager="androidx.recyclerview.widget.LinearLayoutManager"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.761"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.632" />
</androidx.constraintlayout.widget.ConstraintLayout>
여기서는 app:layoutManager="android.recyckerview.widget.LinearLayoutManager"를 넣었습니다.
activity_login.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:background="#a6d8fe"
tools:context=".LoginActivity">
<EditText
android:id="@+id/login_email"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="85dp"
android:ems="10"
android:inputType="textPersonName"
android:hint="login_email"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/login_password"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:ems="10"
android:inputType="textPersonName"
android:hint="login_password"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/login_email" />
<Button
android:id="@+id/login_button"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="80dp"
android:text="login_button"
android:background="#fb7606"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/login_password" />
</androidx.constraintlayout.widget.ConstraintLayout>
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout 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"
android:background="#a6d8fe"
tools:context=".MainActivity">
<EditText
android:id="@+id/UserName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="85dp"
android:ems="10"
android:inputType="textPersonName"
android:hint="UserName"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<EditText
android:id="@+id/email_area"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:ems="10"
android:inputType="textPersonName"
android:hint="email_area"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.497"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/UserName" />
<EditText
android:id="@+id/password_area"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="30dp"
android:ems="10"
android:inputType="textPersonName"
android:hint="password_area"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.502"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/email_area" />
<Button
android:id="@+id/join_button"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:text="join_button"
android:background="#fb7606"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.473"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/password_area" />
<Button
android:id="@+id/login_button_main"
android:layout_width="200dp"
android:layout_height="wrap_content"
android:layout_marginTop="36dp"
android:text="login_button"
android:background="#fb7606"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.473"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/join_button" />
</androidx.constraintlayout.widget.ConstraintLayout>
message_list_row.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
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="80dp">
<TextView
android:layout_width="73dp"
android:layout_height="26dp"
android:layout_margin="20dp"
android:text="name"
tools:layout_editor_absoluteX="10dp"
tools:layout_editor_absoluteY="30dp">
</TextView>
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="message"
tools:layout_editor_absoluteX="130dp"
tools:layout_editor_absoluteY="30dp">
</TextView>
</androidx.constraintlayout.widget.ConstraintLayout>
name message
name message
name message
이게 어떻게 뜨는지 궁금해요.
video\app\src\main\java\com\example\chatting_video\ChatListActivity.kt: (12, 23): Unresolved reference: GroupAdapter
e: C:\Users\MS\AndroidStudioProjects\chatting_video\app\src\main\java\com\example\chatting_video\MainActivity.kt: (36, 13): Unresolved reference: db
이런오류들을 어떻게 해결해야 하나요?
val adapter = GroupAdapter<GroupieViewHolder>를 인력하면 빨간색으로 떠요
자동입력이 안되요.
implementation "com.xwray:groupie:$groupie_version"
2.9.0은 어떻게 입력하는 것인가요? 이걸 그대로 입력하면 오류가 떠요.
GroupAdapter와 GroupieViewHolder가 입력되는 부분이 없어서 빨간색 오류가 뜨고, 실행이 안되요. 무슨 코드를 추가해야 이것들이 자동 입력이 되나요?
그리고 수업강의하실때 만들었던 원본 파일있으시면 공유가능할까요? 제거랑 비교하면서 코드를 짜려고요.
Answer 3
0
복사하기 붙여넣기를 말하는건가요?
implementation "com.xwray:groupie:$groupie_version"를 붙여넣기 하라는 말인가요?
자세하게 설명부탁드립니다.
Groupy 라이브러리 지원이 되지 않습니다.
0
172
1
Firebase가 아닌 my sql
0
361
0
4분 3초에서 그룹 어뎁터와 그룹뷰 홀더 빨간색 글씨
0
296
2
7강 RecyclerView 강의에서 질문있습니다.
0
616
3
개복님 말씀대루 다했는데 도중에 앱이 꺼져용
0
412
1
안녕하세요. 말씀하신 import 추가했는데 오류가 또 뜨네요 ㅠ
0
479
2
안녕하세욤 강의 잘보고 있습니다
0
292
2
파이어스토어,리얼타임데이터베이스 uid 관련 질문입니다.
0
311
2
recyclerview_list 이부분이 안뜹니다.
0
276
1
firebase 업데이트 된버전에 코드를 알 수 있을 까요?
0
226
1
Firebase 연동 질문입니다.
0
293
1
auth.createUserWithEmailAndPassword 유저생성이안돼요
0
417
1
개복치님 리사이클러뷰 질문입니다.
0
340
3
recycleview강의에서 4분 12초에 .adapter부분이 빨간색이 떠요.
0
449
3
.adapter부분이 빨간색이 떠요. 어떤게 빠진건가요?
0
218
1
13강 리얼타임 수강중입니다. 말씀대로 LOG.D(TAG,MSG 결과입니다. )
0
526
6
GroupAdapter와 GroupieViewHolder 자동입력이 안떠요.
0
280
1
auth = FirebaseAuth.getInstance를 auth = Firebase.auth로 바꾸면 오류가 떠요.
0
267
0
빨간색 item을 Import하는 법과 GroupViewHolder 자동입력되는 법과 Try it out:2.9.0 다운받는 법좀 알려주세요!
0
259
0
13강 리얼타임 수강중입니다.
0
442
1
ChatListActivity에서 디자인 (or 텍스트) 메뉴가 없어서 리사이클뷰를 키지 못합니다.
0
342
0
이 코드를 어디에 넣는건가요? db.collection(
0
252
0
빨간색 글씨때문에 막혀요. 그리고 Cloud Firestore 초기화 코드가 달라요.
0
945
2
chatting_video 타이틀 제거가 안되요.
0
241
2

