잡동사니

반응형

질문

내 함수에서 ImageView 에 대한 콘텐츠 설명을 설정할 수없는 이유는 무엇입니까? 그래도 드로어 블 리소스와 텍스트를 설정할 수있는 것 같습니다.

class MyAdapter(
    private val dataIVPlayOrPause: Drawable,
    private val dataTVSong: String
) : RecyclerView.Adapter<RVAdapterEmbark.MyViewHolder>() {

    private val typeHeader = 1
    private val typeItem = 2

    override fun onCreateViewHolder(parent: ViewGroup, type: Int): MyViewHolder {
        return when (type) {
            typeHeader -> MyViewHolder(inflateHelper(R.layout.header, parent))

            typeItem -> MyViewHolder(inflateHelper(R.layout.body, parent))

            else -> MyViewHolder(inflateHelper(R.layout.body, parent))
        }
    }

    override fun onBindViewHolder(viewHolder: MyViewHolder, position: Int) {
        if (getItemViewType(position) == typeHeader) {

        } else if (getItemViewType(position) == typeItem) {
            val ivPlayPause = viewHolder.itemView. iv_Play_Pause
            ivPlayPause(R.drawable.play)
            ivPlayPause = R.string.play.toString()

            val buttonClickListener = View.OnClickListener {
                if (tvSongName.text == null) {
                    playSong(tvSongName, ivPlayPause)
                } else {
                    pauseSong(tvSongName, ivPlayPause)
                }
            }
        }
    }

    private fun inflateHelper(resId: Int, parent: ViewGroup): View {
        return LayoutInflater.from(parent.context).inflate(resId, parent, false)
    }

    class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView)

    override fun getItemCount(): Int {
        return dataTitle.size + 1
    }

    override fun getItemViewType(position: Int): Int {
        return if (position == 0) typeHeader
        else typeItem
    }

    private fun playSong(
        tvSongName: TextView,
        ivPlayPause: ImageView
    ) {
        tvSongName.text = "Song name"

        ivPlayPause.setImageResource(R.drawable.pause)

        ivPlayPause.contentDescription = getString(R.string.pause)

    }
}

답변1

RecyclerView.Adapter 에 있기 때문에 Activity , Fragment또는 Context인스턴스에 액세스 할 수 없습니다. 어떤 getString () 이 선언되었는지.

이 경우 ImageView Context 를 사용하여 문자열을 가져올 수 있습니다.

ivPlayPause.contentDescription = ivPlayPause.context.getString(R.string.pause)


 

 

 

 

출처 : https://stackoverflow.com/questions/60802987/unable-to-set-imageview-content-description-within-function

반응형

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band