inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

리사이클러뷰(RecyclerView)를 이용하여 완성

recyclerview 질문합니다

559

정현

작성한 질문수 2

0

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

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

firebase kotlin android

답변 3

0

서성현

RVAdapter.kt 

28번줄 rv_text.text = item 

 

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

1

개복치개발자

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

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

0

서성현

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

감사합니다.

0

개복치개발자

이 부분도 보여주세요~

R.layout.rv_item

0

정현

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

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

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>

0

개복치개발자

아닙니다~ 

 

여기 이 부분 layout_height="100dp"

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

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="100dp">

0

정현

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

 

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

 

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

0

개복치개발자

감사합니다 :)

0

개복치개발자

끝까지 파이팅입니다 ~

0

개복치개발자

안녕하세요 

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

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

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

0

정현

 

ㅎㅎ답변 감사합니다!

 

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

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

 

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

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

0

개복치개발자

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

0

정현

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>

 

코드는 이렇습니다

 

 

 

0

개복치개발자

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

0

정현

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 코드입니당

 

주사위앱 소개 및 레이아웃 설정 문제

0

80

2

안드로이드 에뮬레이터가 실행이 안 되요...ㅠ

0

134

2

30 강 소스 좀 올려 주십시요

0

95

2

onBackPressed 함수가 동영상 하고 다르게 동작합니다.

0

105

2

ListView 초기 실행 안됩니다.

0

108

2

코딩을 완료하고난후 앱 실행시 자동 종료

0

82

2

datavinding에서 오류가 납니다.

0

63

1

안드로이드 스튜디오 버전 차이로 초기 empyt activity 선택하면 안됩니다.

0

135

2

context의 구별에 대하여

0

81

2

"프롤로그에서 ..." 오류 관련해 직전 질문에 대한 추가 질문입니다.

0

78

2

"프롤로그에서 콘텐츠가 허용되지 않습니다." 오류

0

180

3

해결완료

1

199

2

databinding 설정후 run하면 에러(해결)

0

233

2

databinding 설정 이후 실행시 에러

0

289

4

안드로이드 입문하는 사람입니다.

0

76

1

Firebase uid

0

90

3

activity_main 화면 다름

0

125

2

강의화면과 다른데 맞게진행되는것인가요...????

0

115

2

파이어베이스 질문

0

83

2

ActivityMainBinding에 오류가 납니다

0

145

2

선생님 onBackPressed 작동이 안되는거 같습니다

0

127

2

>app>res>layout 이 존재하지 않습니다.

0

122

2

안드로이드 스튜디오 미어캣 버전 사용 한글 깨짐

0

777

2

안드로이드 스튜디오 오류 발생 시 대처 방법은 요?

0

305

2