
[英]Why am I getting the Invocation Target Exception while using Firebase Recycler View Adapter?
[英]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)
}
}
}
这是错误:*
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.