강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của benido1242862
benido1242862

câu hỏi đã được viết

[Siêu cơ bản] Học Android Kotlin (Android Kotlin) bằng cách tạo 8 ứng dụng

Hoàn thành bằng RecyclerView

recyclerview 질문합니다

Viết

·

547

0

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!

쌤처럼 표시되는 화면에 리스트가 여러 개 뜨지 않구, 리스트 항목 하나가 공간을 다 차지해버립니다..
하루 종일 찾아봐도 해결방법을 모르겠네요
 
 
firebasekotlinandroid

Câu trả lời 3

0

RVAdapter.kt 

28번줄 rv_text.text = item 

 

Import도 되지 않아 앞단계에서도 넘기고 왔습니다.

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

안녕하세요 
findviewById<TextureView> 가 아니라 -> findviewById<TextView>로 변경해보시겠어요?

마찬가지로, xml 파일에서도 TextureView 를 TextView로 변경해주세요~

선생님 잘해결되었습니다.

감사합니다.

0

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

이 부분도 보여주세요~

R.layout.rv_item
benido1242862님의 프로필 이미지
benido1242862
Người đặt câu hỏi

죄송합니다 제 실력이 더 있었다면 필요한 코드를 한번에 올려드릴텐데!..

본의 아니게 민폐가 되는 것 같네요

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="match_parent">

<TextView
android:id="@+id/rvTextId"
android:text="노래리스트"
android:layout_margin="10dp"
android:textStyle="bold"
android:textSize="25sp"
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>

</LinearLayout>
bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

아닙니다~ 

 

여기 이 부분 layout_height="100dp"

이렇게 변경하면 잘 나오나요??

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp">
benido1242862님의 프로필 이미지
benido1242862
Người đặt câu hỏi

잘 나오네요!! 여기에 문제가 있을거라 생각 못한 제 잘못입니다!!

 

완강하고 수강후기 작성했습니다! 안풀리던 오류도 해결되어 너무 좋네요.

 

다른 강의들도 수강 예정입니다 ㅎㅎ 좋은 강의 , 좋은 답변 감사합니다!

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

감사합니다 :)

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

끝까지 파이팅입니다 ~

0

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

안녕하세요 

아마 recylcerView의 item.xml파일의 height 가 match_parent 로 되어 있어서 생긴 문제같습니다.

match_parent가 아니라 200dp 같이 범위를 지정해주면 됩니다.

만약 이해가 가지 않으시면 코드 일부가 아니라 사용한 코드 모두 공유해주세요.

benido1242862님의 프로필 이미지
benido1242862
Người đặt câu hỏi

 

ㅎㅎ답변 감사합니다!

 

강의 내에서 선생님께서도 match_parent를 사용하셨는데,  저랑 결과가 다르게 나와요 ㅎㅎ

200dp 로 줄이면  200dp 안에 노래1이라는 항목이 가득 채워집니다 ㅎ...  

 

안드로이드 스튜디오 버전이 달라서 그런걸까요.. 뭘까요?..

첨부파일에 있는 프로젝트를 통째로 가져다 쓰면 이상없습니다

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

전체 코드를 복사해서 공유해주세요~

benido1242862님의 프로필 이미지
benido1242862
Người đặt câu hỏi

Singer1Fragment

package com.example.song_list

import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import androidx.navigation.findNavController
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView

class Singer1Fragment : Fragment() {


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)

}

override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment

val view = inflater.inflate(R.layout.fragment_singer1, container, false)

val items = mutableListOf<String>()
items.add("악뮤 노래1")
items.add("악뮤 노래2")
items.add("악뮤 노래3")
items.add("악뮤 노래4")
items.add("악뮤 노래5")
items.add("악뮤 노래6")
items.add("악뮤 노래7")


val rv = view.findViewById<RecyclerView>(R.id.songRV)
val rvAdapter = RVAdapter(items)

rv.adapter = rvAdapter
rv.layoutManager = LinearLayoutManager(context)

val yang = view.findViewById<ImageView>(R.id.yang)
yang.setOnClickListener{
it.findNavController().navigate(R.id.action_singer1Fragment_to_singer2Fragment)
}

val kyung = view.findViewById<ImageView>(R.id.kyung)
kyung.setOnClickListener{
it.findNavController().navigate(R.id.action_singer1Fragment_to_singer3Fragment)
}

return view
}

}

 

fragment_singer1.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=".Singer1Fragment">

<TextView
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="악동뮤지션 노래 리스트"
android:background="@color/black"
android:gravity="center"
android:textColor="@color/white"
android:textSize="30sp"
android:layout_margin="10dp"
app:layout_constraintTop_toTopOf="parent" />

<androidx.recyclerview.widget.RecyclerView
android:id="@+id/songRV"
android:layout_marginTop="60dp"
android:layout_marginBottom="140dp"
android:layout_width="match_parent"
android:layout_height="match_parent"/>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="130dp"
app:layout_constraintBottom_toBottomOf="parent">

<ImageView
android:id="@+id/akmu"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/akmu" />

<ImageView
android:id="@+id/yang"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/yang" />

<ImageView
android:id="@+id/kyung"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:src="@drawable/kyung" />

</LinearLayout>

</androidx.constraintlayout.widget.ConstraintLayout>

 

코드는 이렇습니다

 

 

 

bokchi님의 프로필 이미지
bokchi
Người chia sẻ kiến thức

Adapter쪽의 코드가 누락된 것 같아요~

benido1242862님의 프로필 이미지
benido1242862
Người đặt câu hỏi

package com.example.song_list

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView

class RVAdapter(val items : MutableList<String>) : RecyclerView.Adapter<RVAdapter.ViewHolder>() {
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RVAdapter.ViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.rv_item, parent, false)

return ViewHolder(view)
}

override fun onBindViewHolder(holder: RVAdapter.ViewHolder, position: Int) {
holder.bindItems(items[position])
}

override fun getItemCount(): Int {
return items.size
}

inner class ViewHolder(itemView : View) : RecyclerView.ViewHolder(itemView){
fun bindItems(item : String){

val rv_text = itemView.findViewById<TextView>(R.id.rvTextId)
rv_text.text = item

}
}
}

 

RVAdapter 코드입니당

 

Hình ảnh hồ sơ của benido1242862
benido1242862

câu hỏi đã được viết

Đặt câu hỏi