通过查看RecyclerView的值来查找RecyclerView行位置

时间:2019-06-29 01:08:14

标签: java android kotlin android-recyclerview

我有一个RecyclerView,里面装有内容。

RecyclerView的{​​{1}}中的值之一是Holder

我将需要遍历var entity_id: Int的行以查找包含特定RecyclerView的行,而不知道适配器的位置。

换句话说,我知道我的行的entity_id中有一个是23,我需要检索该行的adapterPosition。

2 个答案:

答案 0 :(得分:1)

遍历适配器的最后项并与您的条件匹配,如果找到了项,则循环的索引就是适配器项的位置。

<br />function&nbsp;</span><span style="color: #0000BB">test</span><span style="color: #007700">()&nbsp;{
<br /><span style="color: #0000BB">test</span><span style="color: #007700">();

答案 1 :(得分:0)

如果您只需要获取23值的头寸-您可以在ViewHolder中进行回调,以检查该值,如果该值是23->发送包含此项的位置的回调头。

这里看起来--

您的 ViewHolder

 class MyRecyclerViewAdapter(private val callback: (Int) -> Unit) : RecyclerView.Adapter<MyRecyclerViewAdapter.MyViewHolder>() {

   override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
   }

   override fun getItemCount(): Int {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
   }

   override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
    TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
   }

 inner class MyViewHolder(v: View) : RecyclerView.ViewHolder(v) {

    fun bind(model: Model) {

        TODO("Some logic")

        if (model.id == 23) {
            callback.invoke(adapterPosition)
        }
     }
   }
 }

型号:

class Model(val id: Int)

活动:

 override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)

    /** Init LayoutManager 
     *  .... 
     * */

    val adapter = MyRecyclerViewAdapter(callback = { position ->
        TODO("Do some logic with your position")
    })
 }