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")
}
}