Как добавить несколько, например, 3 изображения в строке в виде списка (Kotlin) - PullRequest
0 голосов
/ 01 июля 2018

В R.layout.maskot_list (пользовательская строка для просмотра списка) есть три imageView, и я попытался показать что-то вроде:

mascot1.jpg . mascot2.jpg . mascot3.jpg
mascot4.jpg . mascot5.jpg . mascot6.jpg
etc

, что означает 3 (несколько) изображений в строке, и я уже попробовал следующий код, который я упомянул ниже. Но это показывает изображения, как:

mascot1.jpg
mascot2.jpg
etc

, что означает только 1 изображение в строке. Итак, как я могу решить эту проблему.

 package jp.co.lumber_mill.toyotago.fragment
    import android.content.Context
    import android.os.Bundle
    import android.support.v4.app.Fragment
    import android.support.v4.app.FragmentActivity
    import android.view.LayoutInflater
    import android.view.View
    import android.view.ViewGroup
    import android.widget.BaseAdapter
    import android.widget.ImageView
    import android.widget.ListView
    import android.widget.TextView
    import jp.co.lumber_mill.toyotago.R

    class FragmentMascot : Fragment() {
      override fun onCreateView(inflater: LayoutInflater?, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        val view= inflater!!.inflate(R.layout.fragment_mascot, container, false)
        val listview = view.findViewById<ListView>(R.id.maskot_list)
        listview.adapter = MaskotAdapter(context,activity)
        return view
      }

      private class MaskotAdapter(val context: Context, val activity: FragmentActivity): BaseAdapter() {
       // private val mContext: Context
     private val maskot_images_list = arrayListOf<Int>(R.drawable.maskot1,R.drawable.maskot2,R.drawable.maskot3,R.drawable.maskot4,R.drawable.maskot5,R.drawable.maskot6)

        override fun getCount(): Int {
          return maskot_images_list.size //To change body of created functions use File | Settings | File Templates.
        }

        override fun getItem(position: Int): Any {
          return "test String" //To change body of created functions use File | Settings | File Templates.
        }

        override fun getItemId(position: Int): Long {
          return position.toLong()//To change body of created functions use File | Settings | File Templates.
        }
        //renders each row
        override fun getView(position: Int, convertView: View?, parent: ViewGroup?): View {
          val layoutInflater = LayoutInflater.from(context)
          val maskot_row=layoutInflater.inflate(R.layout.maskot_list, parent, false)

     val maskot_image = maskot_row.findViewById<ImageView>(R.id.maskot_image)
            maskot_image.setImageResource(maskot_images_list.get(position))
          return maskot_row
        }
      }
    }

Ответы [ 2 ]

0 голосов
/ 02 июля 2018

Попробуйте использовать переработчик, так как он самый новый ... или другой, который вы использовали GridLayout Я предоставляю код вида переработчика, который легко поддерживать ..

добавить указанную ниже зависимость в файл gradle уровня приложения.

compile 'com.android.support:recyclerview-v7:25.1.1'

сделать адаптер как ..

class CommentAdapter (var mList:List<Comment>) : RecyclerView.Adapter<CommentAdapter.ItemViewHolder> (){
override fun getItemCount(): Int {
    return mList.size
}

override fun onBindViewHolder(holder: ItemViewHolder?, position: Int) {
    var data=mList[position]
    holder?.mEtMessage?.setText(data.message)
}

override fun onCreateViewHolder(parent: ViewGroup?, viewType: Int): ItemViewHolder {
    var view=LayoutInflater.from(parent?.context).inflate(R.layout.comment_row_layout,parent,false)
    return ItemViewHolder(view)
}

class ItemViewHolder : RecyclerView.ViewHolder{
    var mEtMessage:EditText?=null

    constructor(itemView: View?) : super(itemView){
        mEtMessage=itemView?.findViewById(R.id.crlEtMessage)
    }
}

}

и определите макет представления переработчика, как показано ниже ..

        recyclerView?.layoutManager=GridLayoutManager(activity,3,LinearLayoutManager.VERTICAL,false)
0 голосов
/ 02 июля 2018

Хорошо, я наконец нашел, как это решить. Чтобы добавить 3 изображения, мы можем изменить положение и добавить изображения 3 раза, как показано ниже.

val layoutInflater = LayoutInflater.from(context)
      val badgeRow=layoutInflater.inflate(R.layout.badge_list, parent, false)
        var pos = position
                for (i in 0..(maskot_images_list.size / 3)-2) {
                    val maskot_image1 = badgeRow.findViewById<ImageView>(R.id.left_badge)
                    maskot_image1.setImageResource(maskot_images_list.get(pos))
                    pos++

                    val maskot_image2 = badgeRow.findViewById<ImageView>(R.id.center_badge)
                    maskot_image2.setImageResource(maskot_images_list.get(pos))
                    pos++

                    val maskot_image3 = badgeRow.findViewById<ImageView>(R.id.right_badge)
                    maskot_image3.setImageResource(maskot_images_list.get(pos))
                    pos++
                }

и может изменить часть getCount, как показано ниже:

override fun getCount(): Int {
//for 3 images decrease the number of row count 3 times
              return maskot_images_list.size/3 //To change body of created functions use File | Settings | File Templates.
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...