【问题标题】:Scrollview not showing views滚动视图不显示视图
【发布时间】:2022-01-16 21:42:18
【问题描述】:

我有一个 recyclerview 来显示我的数据。 recyclerviewitem 的一部分是滚动视图。

所以我用数据填充recyclerview,并在持有人中设置图片和文字。我还想在滚动视图中添加图片。

    override fun onBindViewHolder(holder: SchritteViewHolder, position: Int) {
        val current = schritte[position]

       holder.rezeptePicView.setImageDrawable( ContextCompat.getDrawable(context,current.alg.bild))
        var text = ""
        for( zut in zutatenforSchritte[position]) {
            val imageViewzut = ImageView(this.context)
            val textView = TextView(this.context)
            imageViewzut.setImageDrawable(ContextCompat.getDrawable(context,zut.bild))
            textView.text = zut.zutname
            text =text + zut.zutname
            holder.scrollViewSchritte.addView(imageViewzut)
            holder.scrollViewSchritte.addView(textView)
        }
        holder.rezepteItemView.text = current.alg.text + " " + current.sp.temperatur + " " +current.sp.zeit +" " + current.sp.sonst +text
    }

数据在那里,因为我可以在文本中填充图片和文本,但滚动视图保持为空。

我不知道为什么滚动视图保持空白。因此,如果您知道提示的原因可能是什么。

【问题讨论】:

  • 添加您的 xml 文件

标签: android kotlin scrollview


【解决方案1】:

所以,scrollview 让我们大吃一惊。我添加了另一个仅显示图标的回收站视图。

所以外部的 Recyclerview 看起来像这样:

class SchritteSmallListAdapterJustShow internal constructor(
    context: Context
): RecyclerView.Adapter<SchritteSmallListAdapterJustShow.SchritteViewHolder>(){

    private val inflater: LayoutInflater = LayoutInflater.from(context)
    private var schritte = emptyList<SpezSchrittWithAlg>()
    val contextfu = context
    private var zutatenforSchritte :MutableList<List<ZutatenData>> =emptyList<List<ZutatenData>>().toMutableList()

    inner class SchritteViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){
        val rezepteItemView: TextView = itemView.findViewById(R.id.textSmallschritt)
        val rezeptePicView: ImageView = itemView.findViewById(R.id.imageViewschritt)
        var recycler: RecyclerView = itemView.findViewById(R.id.recyclerviewforIcons)
        val adapter = ZutatenIconShowAdapter(contextfu)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SchritteViewHolder {
        val itemView = inflater.inflate(R.layout.recyclerview_schritte, parent, false)
        return  SchritteViewHolder(itemView)
    }

    override fun onBindViewHolder(holder: SchritteViewHolder, position: Int) {
        val current = schritte[position]

       holder.rezeptePicView.setImageDrawable( ContextCompat.getDrawable(contextfu,current.alg.bild))
        holder.rezepteItemView.text = current.alg.text + " " + current.sp.temperatur + " " +current.sp.zeit +" " + current.sp.sonst
        holder.recycler.adapter = holder.adapter
        holder.recycler.layoutManager = LinearLayoutManager(contextfu, RecyclerView.HORIZONTAL, false)
        holder.recycler.layoutMode
        holder.adapter.setZutaten(zutatenforSchritte[position])

    }

    internal fun setSchritte(rez : List<SpezSchrittWithAlg>){
        schritte = rez
        notifyDataSetChanged()
    }

    internal fun setZutatenliste(zutaten  : MutableList<List<ZutatenData>>){
        zutatenforSchritte = zutaten
    }

    override fun getItemCount(): Int =schritte.size
}

而内部的 Recyclerview 看起来是这样的:

class ZutatenIconShowAdapter internal constructor(
    context: Context
): RecyclerView.Adapter<ZutatenIconShowAdapter.ZutatenViewHolder>(){

    private val inflater: LayoutInflater = LayoutInflater.from(context)
    private var zutaten = emptyList<ZutatenData>()
    private val context = context

    inner class ZutatenViewHolder(itemView : View): RecyclerView.ViewHolder(itemView){
        val rezeptePicView: ImageView = itemView.findViewById(R.id.smallIconview)
    }

    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ZutatenViewHolder {
        val itemView = inflater.inflate(R.layout.recyclerview_just_icon, parent, false)
        return  ZutatenViewHolder(itemView)
    }

    override fun onBindViewHolder(holder: ZutatenViewHolder, position: Int) {
        val current = zutaten[position]
        holder.rezeptePicView.setImageDrawable( ContextCompat.getDrawable(context,current.bild))

    }

    internal fun setZutaten(zutats: List<ZutatenData>){
        zutaten= zutats
        notifyDataSetChanged()
    }

    override fun getItemCount(): Int =zutaten.size
}

这让我得到了我想要的结果:

【讨论】:

    【解决方案2】:

    我认为你应该指定你正在使用的 LayoutParams 的实现。

    此外,您只能在滚动视图中显示 一个 项。

    holder.scrollViewSchritte.layoutParams(LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多