Skip to content

Commit

Permalink
[feat] : 글쓰기 api 구현, post 액티비티 ui 구현 (#26)
Browse files Browse the repository at this point in the history
  • Loading branch information
arinming committed Oct 7, 2023
1 parent 3625bae commit 81b3074
Show file tree
Hide file tree
Showing 7 changed files with 183 additions and 22 deletions.
5 changes: 5 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -36,6 +36,11 @@
</intent-filter>
</activity>


<activity android:name=".presentation.ui.post.PostActivity"
android:exported="true">

</activity>
<meta-data
android:name="com.naver.maps.map.CLIENT_ID"
android:value="map.client.id" />
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.pcandriod.kusitms_hackathon_c.presentation

import android.content.Context

object MySharedPreferences {
private const val PREFERENCES_NAME = "MyAppPreferences"
private const val KEY_USER_ID = "user_id"

fun saveUserId(context: Context, userId: String) {
val sharedPreferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
editor.putString(KEY_USER_ID, userId)
editor.apply()
}

fun getUserId(context: Context): String? {
val sharedPreferences = context.getSharedPreferences(PREFERENCES_NAME, Context.MODE_PRIVATE)
return sharedPreferences.getString(KEY_USER_ID, null)
}
}
Original file line number Diff line number Diff line change
@@ -1,42 +1,62 @@
package com.pcandriod.kusitms_hackathon_c.presentation.adapter

import android.content.Context
import android.content.Intent
import android.util.Log
import android.view.LayoutInflater
import android.view.ViewGroup
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.pcandriod.kusitms_hackathon_c.data.data.PostItem
import com.pcandriod.kusitms_hackathon_c.databinding.ItemHomePostBinding
import com.pcandriod.kusitms_hackathon_c.presentation.ui.post.PostActivity

class PostAdapter(private val itemPost: ArrayList<PostItem>) :
RecyclerView.Adapter<PostAdapter.PostViewHolder>() {
private var onItemClickListener: ((Int) -> Unit)? = null
private var context: Context? = null

fun setOnItemClickListener(listener: (Int) -> Unit) {
onItemClickListener = listener
}

private var articleIds: ArrayList<Int> = ArrayList()



override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): PostViewHolder {
context = parent.context
val binding =
ItemHomePostBinding.inflate(LayoutInflater.from(parent.context), parent, false)
return PostViewHolder(binding)
}

override fun onBindViewHolder(holder: PostViewHolder, position: Int) {
holder.setItem(itemPost[position].title, itemPost[position].content)
holder.binding.root.setOnClickListener {
val position = holder.bindingAdapterPosition

Log.d("클릭아벤트", "아이템 클릭 $position")
onItemClickListener?.invoke(position)
}
val itemList = itemPost?.get(position)
holder.title.text = itemList?.title
holder.content.text = itemList?.content
}


override fun getItemCount() = itemPost.size

class PostViewHolder(val binding: ItemHomePostBinding) : RecyclerView.ViewHolder(binding.root) {
fun setItem(title: String, content: String) {
binding.tvTitle.text = title
binding.tvContent.text = content
inner class PostViewHolder(val binding: ItemHomePostBinding) : RecyclerView.ViewHolder(binding.root) {
val title = binding.tvTitle
val content = binding.tvContent
val id: Int? = 0

init {
binding.root.setOnClickListener {
val context = it.context
val intent = Intent(context, PostActivity::class.java)
intent.putExtra("제목", binding.tvTitle.text)
intent.putExtra("내용", binding.tvContent.text)
intent.putExtra("id", id)
ContextCompat.startActivity(context, intent, null)
}
}
}



}
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import com.pcandriod.kusitms_hackathon_c.data.remote.request.SignInRequest
import com.pcandriod.kusitms_hackathon_c.data.remote.response.ResponseSignIn
import com.pcandriod.kusitms_hackathon_c.data.remote.service.LoginService
import com.pcandriod.kusitms_hackathon_c.databinding.ActivityLoginBinding
import com.pcandriod.kusitms_hackathon_c.presentation.MySharedPreferences
import com.pcandriod.kusitms_hackathon_c.presentation.ui.main.MainActivity
import retrofit2.Call
import retrofit2.Callback
Expand Down Expand Up @@ -54,8 +55,7 @@ class LoginActivity : AppCompatActivity() {
accessToken = NaverIdLoginSDK.getAccessToken().toString()
Log.d(TAG, "네이버 로그인 유저 정보 : $name")
Log.d(TAG, "인가 토큰 : $accessToken")
Log.d(TAG, "${result.profile}")

Log.d(TAG, "${result.profile?.id}")

api.postSignIn(
SignInRequest(accessToken, name)
Expand All @@ -64,7 +64,7 @@ class LoginActivity : AppCompatActivity() {
call: Call<ResponseSignIn>,
response: Response<ResponseSignIn>
) {
Log.d(TAG, "API 성공 ${response.body().toString()}")
MySharedPreferences.saveUserId(this@LoginActivity, response.body()?.accessToken.toString())
val intent = Intent(this@LoginActivity, MainActivity::class.java)
startActivity(intent)
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import com.pcandriod.kusitms_hackathon_c.data.remote.service.HomeService
import com.pcandriod.kusitms_hackathon_c.data.remote.service.WriteService
import com.pcandriod.kusitms_hackathon_c.databinding.FragmentWriteCustomerBinding
import com.pcandriod.kusitms_hackathon_c.databinding.FragmentWriteOwnerBinding
import com.pcandriod.kusitms_hackathon_c.presentation.MySharedPreferences
import com.pcandriod.kusitms_hackathon_c.presentation.adapter.PostAdapter
import com.pcandriod.kusitms_hackathon_c.presentation.ui.main.MainActivity
import com.pcandriod.kusitms_hackathon_c.presentation.ui.main.home.HomeFragment
Expand All @@ -54,7 +55,6 @@ class WriteCustomerFragment(var itemList: ArrayList<PostItem>) : Fragment() {
// 앨범 설정
albumLauncher = albumSetting(fragmentWriteCustomerBinding.ivRegisterImage)


fragmentWriteCustomerBinding.run {


Expand Down Expand Up @@ -142,6 +142,8 @@ class WriteCustomerFragment(var itemList: ArrayList<PostItem>) : Fragment() {


private fun postCustomer() {
val userId = MySharedPreferences.getUserId(this.requireContext())
Log.d("dada", userId.toString())
val api = ApiModule.getInstance().create(WriteService::class.java)
if (
fragmentWriteCustomerBinding.etvContent.text.toString() != ""
Expand All @@ -150,20 +152,21 @@ class WriteCustomerFragment(var itemList: ArrayList<PostItem>) : Fragment() {
) {
api.postCustomer(
WriteCustomerRequest(
accessToken = "",
"가게 소식",
fragmentWriteCustomerBinding.etvTitle.toString(),
fragmentWriteCustomerBinding.etvContent.toString()
accessToken = userId.toString(),
category = "가게 소식",
title = fragmentWriteCustomerBinding.etvTitle.text.toString(),
content = fragmentWriteCustomerBinding.etvContent.text.toString()
)
).enqueue(object : Callback<ResponsePost> {
override fun onResponse(
call: Call<ResponsePost>,
response: Response<ResponsePost>
) {
Log.d("HomeFragment", "API 성공 ${response.body()}")
Log.d("dada", fragmentWriteCustomerBinding.etvTitle.text.toString())
Log.d("dada", response.code().toString())
val postItem = PostItem(
fragmentWriteCustomerBinding.etvTitle.toString(),
fragmentWriteCustomerBinding.etvContent.toString()
fragmentWriteCustomerBinding.etvTitle.text.toString(),
fragmentWriteCustomerBinding.etvContent.text.toString()
)
itemList.add(postItem)
val fragmentManager = requireActivity().supportFragmentManager
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package com.pcandriod.kusitms_hackathon_c.presentation.ui.post

import android.os.Bundle
import androidx.appcompat.app.AppCompatActivity
import com.pcandriod.kusitms_hackathon_c.R
import com.pcandriod.kusitms_hackathon_c.databinding.ActivityPostBinding

class PostActivity : AppCompatActivity() {
private lateinit var binding: ActivityPostBinding


override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_login)

binding = ActivityPostBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
}
}
93 changes: 93 additions & 0 deletions app/src/main/res/layout/activity_post.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,93 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">

<androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/constraintLayout2"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<com.google.android.material.appbar.MaterialToolbar
android:id="@+id/materialToolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/white"
android:minHeight="?attr/actionBarSize"
android:theme="?attr/actionBarTheme"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />

<ImageButton
android:id="@+id/ibtn_close"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="16dp"
android:backgroundTint="@android:color/transparent"
android:foregroundGravity="center"
android:src="@drawable/home_icn_back"
app:layout_constraintBottom_toBottomOf="@+id/materialToolbar"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

<TextView
android:id="@+id/tv_main"
style="@style/subtitle2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:foregroundGravity="center"
android:text="가게 소식"
android:theme="@style/subtitle2"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>


<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:paddingHorizontal="16dp"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout2">

<TextView
android:id="@+id/tv_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="신당동 떡볶이, 서명 운동 참여할 사람!"
android:theme="@style/subtitle1"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/constraintLayout2" />

<TextView
android:id="@+id/tv_content"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이서명운동하자나랑같이"
android:theme="@style/subtitle4"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_title" />


<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:src="@drawable/logo_main"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_content" />

</androidx.constraintlayout.widget.ConstraintLayout>


</androidx.constraintlayout.widget.ConstraintLayout>

0 comments on commit 81b3074

Please sign in to comment.