코드를 입력하세요
@FormUrlEncoded
@POST("_.php") //서버 주소
fun comboMenu(@Field("module_io") moduleIo : String, @Field("state_yn") stateYn : String) : Call<List<Combo>> //성공
private fun getCombobox(moduleIo: String, stateYn: String) {
RetrofitBaseUrl.getRetrofitInstance(Common.dbUrl)
.create(RetrofitService::class.java).comboMenu(moduleIo, stateYn)
.enqueue(object : Callback<List<Combo>> {
override fun onResponse(call: Call<List<Combo>>, response: Response<List<Combo>>) {
val combo: List<Combo>? = response.body()
if (combo != null) {
Log.d("TAG", "combo => ${combo.size}")
setComboUi(combo)
}
}
override fun onFailure(call: Call<List<Combo>>, t: Throwable) {
Toast.makeText(this@MainActivity, "서버에 문제가 있습니다.", Toast.LENGTH_SHORT).show()
Log.i("TAG", "selectInfo 문제 : ${t.message}")
}
})
}
3-1) 받아온 값 중 스피너에 텍스트로 뿌려줄 컬럼을 ArrayList에 제네릭 string으로 담는다.
3-2) ArrayAdapter를 이용하여 ui를 그린다
매개변수로 (context, 스피너 텍스트용 UI, 스피너 텍스트용 UI에 텍스트뷰 id, 3-1에서 담은 array) 를 보낸다
3-3) 스피너 셀렉트 리스너 달아주고 원하는 기능 넣어주기
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_sp_item"
android:layout_width="match_parent"
android:layout_height="50dp"
android:lineSpacingExtra="6sp"
android:paddingHorizontal="20dp"
android:paddingVertical="16dp"
android:textSize="16sp"
android:textStyle="normal"/>
</LinearLayout>
private fun setComboUi(combo: List<Combo>) {
runOnUiThread {
//3-1)
val comboArr : ArrayList<String> = ArrayList()
for(i in combo.indices) {
comboArr.add(combo.get(i).comboMenu)
}
//3-2)
val adapter : ArrayAdapter<String> = ArrayAdapter(this, R.layout.spinner_item, R.id.tv_sp_item , comboArr)
binding.spinner.adapter = adapter
// 3-3)
binding.spinner.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
override fun onItemSelected(
parent: AdapterView<*>,
view: View,
position: Int,
id: Long
) {
// 선택된 항목 처리
val selectedCombo = combo[position]
// WebView에 해당 URL을 표시
val webViewUrl = "http://${selectedCombo.domain}${selectedCombo.path}${selectedCombo.phpFile}"
binding.webView.loadUrl(webViewUrl)
}
override fun onNothingSelected(parent: AdapterView<*>?) {
// 선택된 항목이 없는 경우 처리
}
}
}
}