Android Firebase Recyclerview(垂直滚动)始终从另一个活动中单击后退按钮滚动至开始

Android Firebase Recyclerview(垂直滚动)始终从另一个活动中单击后退按钮滚动至开始,android,firebase,kotlin,android-recyclerview,Android,Firebase,Kotlin,Android Recyclerview,不知道为什么会出现这种行为,但几乎尝试了所有方法,如果您知道问题的解决方法,请告诉我 当我通过单击“上一步”按钮从SellerAddNewProductActivity返回时,RecyclerView始终滚动到开始 class SellerHomeFragment : Fragment() { private var searchInputText:String = "" private var sellerProductsViewListRecyclerVi

不知道为什么会出现这种行为,但几乎尝试了所有方法,如果您知道问题的解决方法,请告诉我 当我通过单击“上一步”按钮从SellerAddNewProductActivity返回时,RecyclerView始终滚动到开始

class SellerHomeFragment : Fragment() {
    private var searchInputText:String = ""
    private var sellerProductsViewListRecyclerView: RecyclerView? = null
    private var layoutManager: RecyclerView.LayoutManager? = null
    private var scroll_state: Parcelable? = null
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val root = inflater.inflate(R.layout.fragment_seller_home, container, false)
        sellerProductsViewListRecyclerView = root.findViewById(R.id.seller_products_view_list)
        layoutManager = LinearLayoutManager(this.context)
        sellerProductsViewListRecyclerView?.layoutManager = layoutManager
        val searchText: EditText = root.findViewById(R.id.seller_search_product_name)
        val searchProductsBtn: Button = root.findViewById(R.id.seller_search_products_btn)
        val sellerViewByProductState: Spinner = root.findViewById(R.id.seller_view_by_product_state)
        sellerViewByProductState.setSelection(0)
        searchProductsBtn.setOnClickListener {
            searchInputText = searchText.text.toString()
            createProductRecyclerView()
        }
        sellerViewByProductState?.onItemSelectedListener = object : AdapterView.OnItemSelectedListener{
            override fun onNothingSelected(parent: AdapterView<*>?) {
            }

            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                createProductRecyclerView()
            }

        }
        return root
    }

    override fun onResume() {
        super.onResume()
        if(scroll_state!=null){
            sellerProductsViewListRecyclerView!!.layoutManager!!.onRestoreInstanceState(scroll_state)
        }
    }

    override fun onPause() {
        super.onPause()
        scroll_state = sellerProductsViewListRecyclerView!!.layoutManager!!.onSaveInstanceState()
    }

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

    private fun createProductRecyclerView() {
        var productRef: DatabaseReference = FirebaseDatabase.getInstance().reference.child(
            PRODUCTS_DB_NAME
        )
        var options: FirebaseRecyclerOptions<Products>? = null
        val sellerViewByProductState: Spinner =
            requireView().findViewById(R.id.seller_view_by_product_state)
        val selectedProductState = sellerViewByProductState.selectedItem.toString()
        options = FirebaseRecyclerOptions.Builder<Products>().setQuery(
            productRef.child(selectedProductState).orderByChild(SID_PROPERTY)
                .equalTo(FirebaseAuth.getInstance().currentUser!!.uid), Products::class.java
        ).setLifecycleOwner(this).build()
        val adapter = object : FirebaseRecyclerAdapter<Products, ProductViewHolder>(options) {
            override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ProductViewHolder {
                return ProductViewHolder(
                    LayoutInflater.from(parent.context)
                        .inflate(R.layout.product_items_layout, parent, false)
                )
            }

            protected override fun onBindViewHolder(
                holder: ProductViewHolder,
                position: Int,
                model: Products
            ) {
                holder.txtProductName.text = model.pname
                holder.txtProductDescription.text = model.description
                holder.txtProductPrice.text = "Price = ₹ " + model.price.toString()
                val context = holder.itemView.context
                Picasso.with(this@SellerHomeFragment.context).load(model.image).networkPolicy(
                    NetworkPolicy.OFFLINE
                ).tag(context).into(holder.imageView,
                    object : Callback {
                        override fun onSuccess() {
                        }

                        override fun onError() {
                            Picasso.with(this@SellerHomeFragment.context).load(model.image)
                                .into(holder.imageView)
                        }
                    })
                holder.itemView.setOnClickListener {
                    val intent: Intent = Intent(
                        this@SellerHomeFragment.context,
                        SellerAddNewProductActivity::class.java
                    )
                    intent.putExtra("category", model.category)
                    intent.putExtra("pid", model.pid)
                    val sellerViewByProductState: Spinner =
                        requireView().findViewById(R.id.seller_view_by_product_state)
                    val existingProductState = sellerViewByProductState.selectedItem.toString()
                    intent.putExtra("existingProductState", existingProductState)
                    startActivity(intent)
                }
            }
        }
        sellerProductsViewListRecyclerView?.setAdapter(adapter)
        adapter.startListening()
    }
}
class SellerHomeFragment:Fragment(){
private var searchInputText:String=“”
私有变量sellerProductsViewListRecyclerView:RecyclerView?=null
私有变量layoutManager:RecyclerView.layoutManager?=null
私有变量滚动\u状态:可包裹?=null
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看{
val root=充气机。充气(R.layout.fragment\u seller\u home,container,false)
sellerProductsViewListRecyclerView=root.findViewById(R.id.seller\u products\u view\u list)
layoutManager=LinearLayoutManager(this.context)
sellerProductsViewListRecyclerView?.layoutManager=layoutManager
val searchText:EditText=root.findViewById(R.id.seller\u search\u product\u name)
val searchProductsBtn:Button=root.findviewbyd(R.id.seller\u search\u products\u btn)
val sellerViewByProductState:Spinner=root.findViewById(R.id.seller\u view\u by\u product\u state)
sellerViewByProductState.setSelection(0)
searchProductsBtn.setOnClickListener{
searchInputText=searchText.text.toString()
createProductRecyclerView()
}
sellerViewByProductState?.onItemSelectedListener=对象:AdapterView.onItemSelectedListener{
覆盖未选择的乐趣(家长:AdapterView?){
}
覆盖已选择(父项:AdapterView?,视图:view?,位置:Int,id:Long){
createProductRecyclerView()
}
}
返回根
}
重写onResume(){
super.onResume()
如果(滚动状态!=null){
SellerProductsView!!.layoutManager!!.onRestoreInstanceState(滚动状态)
}
}
覆盖暂停(){
super.onPause()
scroll\u state=SellerProductsView!!.layoutManager!!.onSaveInstanceState()
}
覆盖已创建的视图(视图:视图,保存状态:捆绑?){
super.onViewCreated(视图,savedInstanceState)
createProductRecyclerView()
}
私人娱乐createProductRecyclerView(){
var productRef:DatabaseReference=FirebaseDatabase.getInstance().reference.child(
产品名称
)
变量选项:FirebaseRecyclerOptions?=null
val sellerViewByProductState:微调器=
RequireReview().findViewById(R.id.Sellers\u view\u by\u product\u state)
val selectedProductState=sellerViewByProductState.selectedItem.toString()
选项=FirebaseRecyclerOptions.Builder().setQuery(
productRef.child(selectedProductState).orderByChild(SID\U属性)
.equalTo(FirebaseAuth.getInstance().currentUser!!.uid),Products::class.java
).setLifecycleOwner(this.build())
val适配器=对象:FirebaseRecyclerAdapter(选项){
重写CreateViewHolder(父级:ViewGroup,viewType:Int):ProductViewHolder{
返回产品视图持有者(
LayoutInflater.from(parent.context)
.充气(R.layout.product\u items\u layout,父项,false)
)
}
BindViewHolder上的受保护覆盖功能(
持有者:ProductViewHolder,
职位:Int,
型号:产品
) {
holder.txtProductName.text=model.pname
holder.txtProductDescription.text=model.description
holder.txtProductPrice.text=“价格=₹ " + model.price.toString()
val context=holder.itemView.context
毕加索(this@SellerHomeFragment.context).load(model.image).networkPolicy(
NetworkPolicy.OFFLINE
).tag(context).into(holder.imageView,
对象:回调{
覆盖成功的乐趣(){
}
重写错误(){
毕加索(this@SellerHomeFragment.context).load(model.image)
.into(holder.imageView)
}
})
holder.itemView.setOnClickListener{
val intent:intent=intent(
this@SellerHomeFragment.context,
SellerAddNewProductActivity::class.java
)
intent.putExtra(“类别”,model.category)
intent.putExtra(“pid”,model.pid)
val sellerViewByProductState:微调器=
RequireReview().findViewById(R.id.Sellers\u view\u by\u product\u state)
val existingProductState=sellerViewByProductState.selectedItem.toString()
intent.putExtra(“existingProductState”,existingProductState)
星触觉(意图)
}
}
}
sellerProductsViewListRecyclerView?.setAdapter(适配器)
adapter.startListening()
}
}

我不确定我是否理解您的代码,但我认为如果在添加产品后调用函数setAdapter(adapter),则需要重新加载适配器。
将项添加到适配器时,请在适配器上使用函数notifyItemInserted()或notifyItemRangeSerted(位置、范围)。

我不确定是否理解您的代码,但我认为,如果在添加产品后调用函数setAdapter(适配器),则会重新加载适配器。 将项添加到适配器时,请在适配器上使用函数notifyItemInserted()或notifyItemRangeSerted(位置、范围)