0

Greating follow Coders,我想问你,因为我被卡住了。

目前我正在处理一个类似于 Instagram 的关注过程的页面。在我的情况下,该应用程序将首先匹配被关注的人,你如何关注。如果完成,程序将启动父recyclerview并写出被关注用户的姓名和头像。第二步是获取关注的用户培训。在那之前一切正常,但在大多数情况下,当列表中只有一个训练时,父级 recyclerview 中的第一个 recyclerview(嵌套)会消失。如果第一次正确加载所有内容,也会发生同样的情况,但是当我在水平子回收器视图中滚动时(那时将创建项目的视图,但已经从云中获取)回收器视图总是消失。如果它只有一个项目,则只有第一个。

recyclerview有什么属性,我要设置什么?

谢谢你的帮助。彼得·帕兹曼迪

父 onBindViewHolder(在片段中)

override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, 
    savedInstanceState: Bundle? ): View?
{
    val rootView = inflater.inflate(R.layout.news_fragment, container,               
        false)

    firebaseViewModel = 
        ViewModelProviders.of(this).get(FirebaseViewModel::class.java)

    FirebaseRepository.currentUserId?.let {
        Log.i("$TAG.currentUserId", "${it}")
        firebaseViewModel.getFollowedWithLimit(it).observe(this, Observer { 
        list ->
            list?.let {
                loadedUsers = it.size
                for (i in 0..it.lastIndex)
                {
                    if(it[i].followingUsersLastTrainingTimeStamp != 0L)
                    {
                        wholeListOfFollowers.add(it[i].followingUserId)
                    }
                }
                Log.i("$TAG.wholeList", "$wholeListOfFollowers")

                rootView.recyclerView_newsfeed.apply {
                    recycledViewPool.setMaxRecycledViews(10,20)
                    layoutManager = CustomLinearLayoutManager(context!!, 
                        LinearLayoutManager.VERTICAL, false)
                    adapter = NewsFeedAdapter(context, wholeListOfFollowers)
                }

            }
        })
    }

    return rootView
}

子 onBindViewHolder

override fun onBindViewHolder(holder: NewsFeedViewHolder, position: Int)
{
    var userId = usersId[position]

    if(!fetchedUser.contains(position))
    {
        fetchedUser.put(position, true)

        firebaseViewModel.getTrainigs(userId).observe(context as 
        FragmentActivity, Observer {
            it?.let {trainigsList ->
                if(trainigsList.size != 0)
                {
                    firebaseViewModel.getUserByUserId(userId).observe(context, 
                    Observer {user ->
                        user?.let {
                            trainings = trainigsList.toMutableList()
                            loadedTrainingSize = trainings.size
                            if(!user.profileImageUrl.equals(""))
                            {
                                Picasso.get()
                                    .load(user.profileImageUrl)
                                    .into(holder.profileIamge)
                            }

                            holder.username.text = user.name

                            holder.childRecyclerView.apply {
                                recycledViewPool.setMaxRecycledViews(0,1)
                                layoutManager = 
                                  CustomLinearLayoutManager(context, 
                                      RecyclerView.HORIZONTAL, false)
                                adapter = TrainingItemAdapter(context, 
                                    trainings)
                                scrollToPosition(0)
                                stopScroll()
                            }
                        }
                    })
                }
                else
                {
                    Log.i("$TAG.size", "${it.size}")
                    holder.consraintLayout.visibility = View.GONE
                }
            }
        })
    }
    else
    {
        Log.i("$TAG.fetchedUser", "true")
    }
}
4

0 回答 0