BookMarkActivity에 사진이 안뜹니다! (MainActivity에는 사진 떴음)
미해결
[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)
1. 망고플레이트 앱 만들기 -> 데이터베이스에 있는 북마크 정보 불러오기 (11분) 2. 내가 작성한 코드 RVAdapter.kt import android.content.Context import android.text.Layout import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.ImageView import android.widget.TextView import androidx.recyclerview.widget.ItemTouchHelper import androidx.recyclerview.widget.RecyclerView import com.bumptech.glide.Glide class RVAdapter( val context : Context, val List : MutableList<ContentsModel>) : RecyclerView.Adapter<RVAdapter.ViewHolder>() { //1. override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RVAdapter.ViewHolder { //rv_item layout inflate val v= LayoutInflater.from(parent. context ).inflate(R.layout. rv_item , parent, false ) return ViewHolder(v) } interface ItemClick { fun onClick(view : View, position: Int) } var itemClick : ItemClick ?= null //2.ViewHolder 가 Hold 하고 있는 위젯에 데이터를 설정하는 형태 override fun onBindViewHolder(holder: RVAdapter.ViewHolder, position: Int) { holder.binditmes( List [position]) if ( itemClick != null ) { holder?. itemView .setOnClickListener { v -> itemClick !!.onClick(v,position) } } } //3. override fun getItemCount(): Int { return List . size } inner class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView) { fun binditmes(item : ContentsModel) { val rv_text = itemView .findViewById<TextView>(R.id. rvTextArea ) val rv_img = itemView .findViewById<ImageView>(R.id. rvImageArea ) //item: List[position] rv_text. text = item. titleText //Glide : 이미지 로딩 라이브러리 Glide.with( context ) .load(item. ImageUrl ) .into(rv_img) } } } ContentsModel.kt data class ContentsModel ( val url : String = "" , val ImageUrl : String = "" , val titleText : String = "" ) BookmarkActivity.kt import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.util.Log import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.RecyclerView import com.google.firebase.auth.FirebaseAuth import com.google.firebase.auth.ktx.auth import com.google.firebase.database.DataSnapshot import com.google.firebase.database.DatabaseError import com.google.firebase.database.ValueEventListener import com.google.firebase.database.ktx.database import com.google.firebase.ktx.Firebase class BookmarkActivity : AppCompatActivity() { private lateinit var auth : FirebaseAuth private val contentsModel = mutableListOf <ContentsModel>() override fun onCreate(savedInstanceState: Bundle?) { super .onCreate(savedInstanceState) setContentView(R.layout. activity_bookmark ) val database = Firebase. database val myRef = database.getReference( "bookrmark_ref" ) auth = Firebase. auth val recyclerView = findViewById<RecyclerView>(R.id. rv ) val rvAdapter = RVAdapter( this , contentsModel ) recyclerView. adapter = rvAdapter recyclerView. layoutManager = GridLayoutManager( this , 2 ) // 데베 값 읽기 myRef.child( auth . currentUser ?. uid . toString ()) .addValueEventListener( object : ValueEventListener { override fun onDataChange(snapshot: DataSnapshot) { for (dataModel in snapshot. children ) { Log.d( "BOOKmark" , dataModel.toString()) contentsModel .add(dataModel.getValue(ContentsModel:: class . java )!!) } // 동기화 rvAdapter.notifyDataSetChanged() } override fun onCancelled(error: DatabaseError) { Log.e( "Bookmark" , "dbError" ) } }) } } rv_item.xml <? xml version ="1.0" encoding ="utf-8" ?> < LinearLayout xmlns: android ="http://schemas.android.com/apk/res/android" android :layout_width ="match_parent" android :layout_height ="220dp" xmlns: app ="http://schemas.android.com/apk/res-auto" android :orientation ="vertical" android :background ="@drawable/radius" android :layout_margin ="5dp" > < androidx.cardview.widget.CardView android :layout_width ="match_parent" android :layout_height ="wrap_content" app :cardCornerRadius ="30dp" > < ImageView android :id ="@+id/rvImageArea" android :layout_marginTop ="10dp" android :layout_marginBottom ="10dp" android :scaleType ="fitXY" android :src ="@drawable/ic_launcher_background" android :layout_width ="match_parent" android :layout_height ="120dp" /> </ androidx.cardview.widget.CardView > < TextView android :id ="@+id/rvTextArea" android :textStyle ="bold" android :textSize ="20sp" android :layout_width ="wrap_content" android :layout_height ="wrap_content" android :text ="text" android :layout_gravity ="center" android :layout_marginTop ="30dp" /> </ LinearLayout > Bookmark.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" tools :context =".BookmarkActivity" android :orientation ="vertical" > < TextView android :layout_width ="match_parent" android :layout_height ="wrap_content" android :gravity ="center" android :text =" 북마크 " android :textSize ="20sp" android :textStyle ="bold" android :layout_marginTop ="10dp" app :layout_constraintTop_toTopOf ="parent" /> < androidx.recyclerview.widget.RecyclerView android :id ="@+id/rv" android :layout_marginTop ="50dp" android :layout_width ="match_parent" android :layout_height ="match_parent" /> </ androidx.constraintlayout.widget.ConstraintLayout > 3. 북마크 눌렀을 때 나오는 화면 메인 화면
- 망고플레이트앱만들기
- android
- firebase
- kotlin





