繁体   English   中英

我在 fagemen 中使用回收站视图 这是适配器

[英]I am using a recycler view in the fragemen Here is the adapter

class NewAdapter(private val newslist: ArrayList<News>, private val context: Context?):RecyclerView.Adapter<NewAdapter.MyviewHolder>() {

    private lateinit var mListener:onItemClickListene

    interface onItemClickListene{
        fun onItemClick(position: Int)
    }

    fun setOnclickListener(listener: onItemClickListene){
        mListener = listener
    }



    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyviewHolder {
        val itemview = LayoutInflater.from(parent.context).inflate(R.layout.my_grid_view,parent,false)
        return MyviewHolder(itemview,mListener)
    }

    override fun onBindViewHolder(holder: MyviewHolder, position: Int) {
        var currentitem = newslist[position]
        holder.titleimage.setImageResource(currentitem.titleimage)
        holder.tvheading.text = currentitem.heading

    }

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

    class MyviewHolder(itemview:View, listener:onItemClickListene):RecyclerView.ViewHolder(itemview){
        var titleimage:ImageView = itemview.findViewById(R.id.image)
        var tvheading:TextView = itemview.findViewById(R.id.titre)

        init {
            listener.onItemClick(adapterPosition)
        }

    }

}

这是家庭片段

class HomeFragment : Fragment() {

    private lateinit var adapter: NewAdapter
    private lateinit var recyclerView: RecyclerView
    private lateinit var newsarrayList: ArrayList<News>
    lateinit var imageId:Array<Int>
    lateinit var heading:Array<String>
    lateinit var news:Array<String>
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
 
    }
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_home, container, false)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)

        datainitialize()

        val layoutManager = LinearLayoutManager(context)
        recyclerView=view.findViewById(R.id.recycler_view)
        recyclerView.layoutManager = layoutManager
        recyclerView.setHasFixedSize(true)
        adapter = NewAdapter(newsarrayList,context )
        recyclerView.adapter = adapter
        adapter.setOnclickListener(object:NewAdapter.onItemClickListene{

            override fun onItemClick(position: Int) {

                val intent = Intent(context,NewsActivity::class.java)
                intent.putExtra("titre",newsarrayList[position].heading)
                intent.putExtra("news",news[position])
                intent.putExtra("ImageId",newsarrayList[position].titleimage)
                startActivity(intent)

            }

        })
    }
    private fun datainitialize(){
        newsarrayList = arrayListOf<News>()

        imageId = arrayOf(
            R.drawable.a,
            R.drawable.b,
         

        )
        heading = arrayOf(

            getString(R.string.head_1),
            getString(R.string.head_2),

        )
        news = arrayOf(
            getString(R.string.news_a),
            getString(R.string.news_b),
          

        )

        for (i in imageId.indices){
            val news = News(imageId[i],heading[i])
            newsarrayList.add(news)
        }
    }
}
  • 虽然我没有在列表中插入任何项目,但我得到了 ArrayIndexOutOfBoundsException。

这是错误:*

 java.lang.ArrayIndexOutOfBoundsException: length=12; index=-1
    at java.util.ArrayList.get(ArrayList.java:315)
    at com.bstonetech.achatapp.HomeFragment$onViewCreated$1.onItemClick(HomeFragment.kt:93)
    at com.bstonetech.achatapp.adapter.NewAdapter$MyviewHolder.<init>(NewAdapter.kt:53)
    at com.bstonetech.achatapp.adapter.NewAdapter.onCreateViewHolder(NewAdapter.kt:34)
    at com.bstonetech.achatapp.adapter.NewAdapter.onCreateViewHolder(NewAdapter.kt:18)
    at androidx.recyclerview.widget.RecyclerView$Adapter.createViewHolder(RecyclerView.java:7078)
    at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6235)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
    at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
    at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
    at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
    at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
    at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
    at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
    at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540)
    at android.view.View.measure(View.java:19147)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM