问题描述
我正在使用firebase数据库,并且将一个孩子添加到我的通知片段时,我希望计数器对其进行计数。 Notification fragment here
包supgro.com.Controller.Service
MainActivity类:AppCompatActivity(){
private val onNavigationItemSelectedListener = BottomNavigationView.OnNavigationItemSelectedListener { item ->
when (item.itemId) {
R.id.nav_home -> {
moveToFragment(HomeFragment())
return@OnNavigationItemSelectedListener true
}
R.id.nav_search -> {
moveToFragment(SearchFragment())
return@OnNavigationItemSelectedListener true
}
R.id.nav_add -> {
moveToFragment(PostSelectionFragment())
return@OnNavigationItemSelectedListener true
}
R.id.nav_notifications -> {
moveToFragment(NotificationsFragment())
return@OnNavigationItemSelectedListener true
}
R.id.nav_profile -> {
moveToFragment(ProfileFragment())
return@OnNavigationItemSelectedListener true
}
}
false
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
firebaseUser = FirebaseAuth.getInstance().currentUser
val navView:BottomNavigationView = findViewById(R.id.bottom_nav_view)
navView.setOnNavigationItemSelectedListener(onNavigationItemSelectedListener)
navView.getOrCreateBadge(R.id.nav_notifications).apply{
number = 1
isVisible = true
}
moveToFragment(HomeFragment())
}
私人乐趣moveToFragment(片段:片段){
val fragmentTrans = supportFragmentManager.beginTransaction()
fragmentTrans.replace(R.id.fragment_container,fragment)
fragmentTrans.commit()
} }
通知适配器
包supgro.com.Controller.Adapter
class NotificationAdapter(val mContext:Context,val mNotification:List):RecyclerView.Adapter
private val onNavigationView: Int = R.id.nav_notifications
override fun onCreateViewHolder(parent: ViewGroup,viewType: Int): Holder {
val view = LayoutInflater.from(mContext).inflate(R.layout.notifications_item_layout,parent,false)
return Holder(view)
}
override fun onBindViewHolder(holder: Holder,position: Int) {
val notification = mNotification[position]
if (notification.getText().equals("started supporting you")){
holder.commentText.text = "started supporting you"
}else if (notification.getText().equals("liked your post")){
holder.commentText.text = "liked your post"
}else if (notification.getText().contains("commented:")){
holder.commentText.text = notification.getText().replace("commented:","commented: ")
}else if(notification.getText().equals("saved your post")){
holder.commentText.text = "saved your post!"
}else{
holder.commentText.text = notification.getText()
}
userInfo(holder.profileImage,holder.userName,notification.getUserId())
if (notification.isIsPost())
{
holder.postImage.visibility = View.VISIBLE
getPostImage(holder.postImage,notification.getPostid())
}
else
{
holder.postImage.visibility = View.GONE
}
holder.itemView.setOnClickListener{
if (notification.isIsPost()){
val editor = mContext.getSharedPreferences("PREFS",Context.MODE_PRIVATE).edit()
editor.putString("postId",notification.getPostid())
editor.apply()
(mContext as FragmentActivity).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,PostDetailsFragment()).commit()
}else{
val editor = mContext.getSharedPreferences("PREFS",Context.MODE_PRIVATE).edit()
editor.putString("profileId",notification.getUserId())
editor.apply()
(mContext as FragmentActivity).getSupportFragmentManager()
.beginTransaction()
.replace(R.id.fragment_container,ProfileFragment()).commit()
}
}
}
override fun getItemCount(): Int {
return mNotification.size
}
inner class Holder(@NonNull itemView: View) : RecyclerView.ViewHolder(itemView){
var profileImage: CircleImageView = itemView.findViewById(R.id.notification_profile_image)
var postImage: ImageView = itemView.findViewById(R.id.notification_post_image)
var userName: TextView = itemView.findViewById(R.id.username_notification)
var commentText: TextView = itemView.findViewById(R.id.comment_notification)
}
private fun userInfo(imageView: ImageView,userName: TextView,publisherId: String){
val userRef = FirebaseDatabase.getInstance().getReference()
.child("username")
.child(publisherId)
userRef.addValueEventListener(object: ValueEventListener {
override fun onDataChange(p0: DataSnapshot) {
if (p0.exists()){
val user = p0.getValue<User>(User::class.java)
Glide.with(mContext).load(user!!.getImage()).placeholder(R.drawable.add_profile_image).into(imageView)
userName.text = user!!.getUsername()
}
}
override fun onCancelled(p0: DatabaseError) {
TODO("Not yet implemented")
}
})
}
private fun getPostImage(imageView: ImageView,postID: String){
val postRef = FirebaseDatabase.getInstance().reference
.child("Posts")
.child(postID)
postRef.addValueEventListener(object: ValueEventListener {
override fun onDataChange(p0: DataSnapshot) {
if (p0.exists()){
val post = p0.getValue<Post>(Post::class.java)
Glide.with(mContext).load(post!!.getPostImage()).placeholder(R.drawable.add_profile_image).into(imageView)
}
}
override fun onCancelled(p0: DatabaseError) {
}
})
}
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)