<com.google.android.material.floatingactionbutton.FloatingActionButton
android:id="@+id/btn_makePost_main"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="10dp"
android:background="@color/colorPrimaryDark"
android:src="@drawable/ic_add_plus_button"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
btn_makePost_main.setOnClickListener {
val intent = Intent(this, MakePostActivity::class.java)
startActivity(intent)
}
https://developers.kakao.com/docs/latest/ko/getting-started/sdk-android 참고
class App :Application(){
override fun onCreate() {
super.onCreate()
KakaoSdk.init(this, getString(R.string.kakao_key_restApi))
}
}
object RequestToServer {
var kakaoRetrofit = Retrofit.Builder()
.baseUrl("https://dapi.kakao.com")
.addConverterFactory(GsonConverterFactory.create())
.build()
var kakaoService: RequestInterface = kakaoRetrofit.create(RequestInterface::class.java)
}
interface RequestInterface {
@GET("/v3/search/book")
fun searchBook(
@Header("Authorization") token : String,
@Query("query") query: String,
@Query("target") target : String = "title"
) : Call<ResponseSearchBook>
}
package com.gyoung.movierecord.function
import android.util.Log
import retrofit2.Call
import retrofit2.Callback
import retrofit2.Response
fun<ResponseType> Call<ResponseType>.customEnqueue(
onFail:()-> Unit,
onSuccess:(ResponseType)->Unit,
onError:(Response<ResponseType>)->Unit={}
){
this.enqueue(object: Callback<ResponseType> {
override fun onFailure(call: Call<ResponseType>, t: Throwable) {
onFail()
Log.d("network", t.message.toString())
}
override fun onResponse(call: Call<ResponseType>, response: Response<ResponseType>) {
response.body()?.let{
onSuccess(it)
}?:onError(response)
}
})
}
datas = mutableListOf()
val query = et_query_searchItem.text.toString()
try{
val requestToServer = RequestToServer
requestToServer.kakaoService.searchBook(
"KakaoAK " + getString(R.string.kakao_key_restApi),
query
).customEnqueue(
onSuccess = {
if(it.documents!=null){
for(document in it.documents){
datas.add(Documents(
document.title,
document.authors,
document.thumbnail
))
}
rv_adapter.datas = datas
rv_main_searchItem.adapter = rv_adapter
rv_adapter.notifyDataSetChanged()
}else{
this.showCustomToast("검색 결과가 없습니다")
}
},
onFail = {},
onError = { Log.d("MakePost", it.message())}
)
}catch (e : Exception){
}
<EditText
android:imeOptions="actionSearch"
android:inputType="text" />
et_query_searchItem.setOnEditorActionListener { textView, actionId, keyEvent ->
if(actionId == EditorInfo.IME_ACTION_DONE){
searchItem()
true
}else{
false
}
}