[Android Studio] 댓글 창 구현하고 본문에 댓글 추가하기 + 좋아요 버튼 구현

이도연·2023년 8월 17일
0

android studio

목록 보기
8/28

댓글 입력창에 텍스트를 입력하고 comment 버튼을 누르면 입력값을 extras 에 저장한 뒤, 댓글이 추가되는 로직을 짜는 것이 목표이다.

1. 댓글 추가 기능 구현

package com.test.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.view.View

class OnePost : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_onepost)

        val etComment = findViewById<EditText>(R.id.et_comment)
        val btnComment = findViewById<Button>(R.id.btn_comment)
        val tvCommentShow = findViewById<TextView>(R.id.tv_comment_show)

        btnComment.setOnClickListener {
            val commentText = etComment.text.toString().trim()
            if (commentText.isNotEmpty()) {
            
                // 새 댓글 추가
                val existingText = tvCommentShow.text.toString()
                val newComment = "$existingText\n$commentText"
                tvCommentShow.text = newComment
            }
        }
    }
}

이렇게 짜니까 댓글도 보여지지 않았다.
프로필과 유저명도 버튼을 눌러야 보여지게 바꿔야 할 듯 하다.

package com.test.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.widget.EditText
import android.widget.TextView
import android.view.View


class OnePost : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_onepost)


        // 댓글입력창
        val etComment = findViewById<EditText>(R.id.et_comment)
        // 댓글입력 버튼
        val btnComment = findViewById<Button>(R.id.btn_comment)
        // 댓글 보여지는 곳
        val tvCommentShow = findViewById<TextView>(R.id.tv_comment_show)
        // 댓글 작성자
        val tvName = findViewById<TextView>(R.id.tv_name_onepost)
        // 댓글 작성자 프로필
        val ivUser = findViewById<ImageView>(R.id.iv_user_onepost)


        // 초기에는 댓글 입력 요소 및 댓글 표시를 보이지 않도록 설정
        tvName.visibility = View.GONE
        tvCommentShow.visibility = View.GONE
        ivUser.visibility = View.GONE


        btnComment.setOnClickListener {
            val commentText = etComment.text.toString().trim()
            if (commentText.isNotEmpty()) {
                // 댓글을 입력했을 때만 댓글 입력 요소 및 댓글 표시를 보이게 변경
                tvName.visibility = View.VISIBLE
                tvCommentShow.visibility = View.VISIBLE
                ivUser.visibility = View.VISIBLE


                // 비어있는 댓글 텍스트에 새로 입력한 댓글 표시
                val existingText = tvCommentShow.text.toString()
                val newComment = "$existingText\n$commentText"
                tvCommentShow.text = newComment
             else {
             	Toast.makeText(this, "댓글을 입력해주세요.", Toast.LENGTH_SHORT).show()
              
            }
        }
    }
}

.
.
.

// 기존 댓글 텍스트에 새 댓글 추가하여 표시
                val existingText = tvCommentShow.text.toString()
                val newComment = "$existingText\n$commentText"
                tvCommentShow.text = newComment

첫 트때 이 부분을 빼먹고 썼더니

이런 식으로 나왔다..ㅎ

.
.
.

2. 좋아요 기능 구현

좋아요 버튼을 누르면 비어있던 따봉이 채워진 따봉으로 바뀌게 하는 것이 두 번째 목표이다.
따봉 이미지 2개를 drawable 폴더에 추가한 뒤

package com.test.myapplication

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.widget.Button
import android.view.View

class OnePost : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_onepost)

        val btnLike = findViewById<Button>(R.id.btn_like_onepost)

        var isLiked = false

        btnLike.setOnClickListener {
            // 좋아요 버튼 클릭 시 이미지 변경
            if (isLiked) {
                btnLike.setBackgroundResource(R.drawable.fill_like) // fill_like.xml 파일에 맞게 변경
            } else {
                btnLike.setBackgroundResource(R.drawable.like) // 비어있는 좋아요 이미지로 변경
            }
            isLiked = !isLiked
        }
    }
}

isLiked = !isLiked 부분에서 Val cannot be reassigned 오류가 난다.
kotlin 에서 val 로 선언된 변수는 값을 변경할 수 없다. 버튼을 누르면 좋아요 버튼 상태가 바뀌어야 하기 때문에 var 로 재선언했다.

.
.
.

  1. 실행화면

.
.
.
.
.

제목 입력칸이 글자 크기에 비해 높이가 좁고, 내용 입력칸 커서 시작 부분이 윗 부분이 아닌 중간부터 시작하는 것이 마음에 들지 않는다.

아무리 수정하고 수정해도 만족 못하는 것이 내 프로젝트인듯..
부족한 점이 많은만큼 올라갈 일도 많은 것이라고 생각해야지.

0개의 댓글