在片段切换期间保持RecyclerView加载?科特林

时间:2020-07-30 12:31:28

标签: android android-studio kotlin android-fragments

我对编码还比较陌生,现在遇到了一个似乎无法解决的问题。

我最近才改用基于片段的方法,而不是基于活动的方法,我的问题(我认为)是我的片段在加载另一个片段时被破坏了。

您看到,在我的Home Fragment(在Android Studio内部自动生成)上,我有一个recyclerView来显示用户的“产品”。当我切换到另一个片段,然后再返回时,Home片段需要花费一段时间(以及使用大量CPU)来加载。我怀疑这是因为片段在切换时被破坏了。由于我使用“底部导航活动”的名称使用Android Studio的内置片段布局,因此我不知道如何调整导航管理器。有什么办法可以解决这个问题?

这是我的HomeFragment代码,很抱歉,如果它伤害到您的眼睛。

class HomeFragment : Fragment() {

    private lateinit var mAuth: FirebaseAuth
    private lateinit var mDatabase: DatabaseReference
    private lateinit var mStorage: FirebaseStorage

    private lateinit var gridLayoutManager: GridLayoutManager

    companion object {
        lateinit var productAdapter: RecyclerView
    }

    override fun onCreateView(
            inflater: LayoutInflater,
            container: ViewGroup?,
            savedInstanceState: Bundle?
    ): View? {
        val root = inflater.inflate(R.layout.fragment_home, container, false)
        return root
    }

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

        //Initialize firebase references
        mAuth = FirebaseAuth.getInstance()
        mDatabase = FirebaseDatabase.getInstance().reference
        mStorage = FirebaseStorage.getInstance()

        //Get user ID
        val uid = mAuth.currentUser!!.uid

        //Initialize companion objects
        productAdapter = fh_productView

        fillProductView(uid)

        fh_addProduct.setOnClickListener {
            startActivity(Intent(context, AddProductActivity::class.java))
        }



    }

    private fun fillProductView(uid: String) {
        val productList = MainActivity.productList

        fh_productView.apply {
            gridLayoutManager = GridLayoutManager(context, 3, LinearLayoutManager.VERTICAL, false)
            val topSpacingItemDecoration = TopSpacingItemDecoration(20)
            addItemDecoration(topSpacingItemDecoration)
            fh_productView.layoutManager = gridLayoutManager
            fh_productView.setHasFixedSize(true)
            adapter = ProductsAdapter(productList, "HomeFragment")
        }
    }

}

0 个答案:

没有答案