kotlinでアンドロイドスタジオを使ってアプリ開発の勉強しています。
php APIにAndroidアプリから値を送信して
返ってきたAPIのjsonデータの一つの値をアンドロイド画面のtextviewに表示させたいと思っているのですがかないません。
ちなみにtextviewに表示させたい値は"kind"の1つめ。『文化遺産』です。
どなたかご教授よろしくお願いいたします。
Post.kt
data class Post(val btnId: String, val id: String, val time: String, val code: String)
sample.kt
class sample : ArrayList<sampleItem>()
sampleItem.kt
data class sampleItem( val description: String, val imageName: String, val kind: String, val name: String )
MyService.kt
import retrofit2.Call import retrofit2.http.Body import retrofit2.http.POST interface MyService { @POST("posts") fun post(@Body post: Post): Call<sample> }
MainActivity.kt
class MainActivity : AppCompatActivity() { private val retrofit = Retrofit.Builder().apply { baseUrl("https://~~~~~~~~~~~~~~~~~/sample.php/") addConverterFactory(GsonConverterFactory.create()) }.build() private val service = retrofit.create(MyService::class.java) override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_activity_main) val logu : TextView = findViewById(R.id.logu) //ボタンを押した時の処理 val btn : Button = findViewById(R.id.btn) btn.setOnClickListener { val data = Post(btnId = "inBtn", id = "1111", time = "12:34" , code = "22") service.post(data).enqueue( object : Callback<sample> { override fun onResponse(call: Call<sample>, response: Response<sample>) { Toast.makeText(this@MainActivity, "通信完了", Toast.LENGTH_SHORT).show() runOnUiThread { logu.setText(response.body()?.⭐️なんと書けば呼び出せるのかわからない⭐️) } } override fun onFailure(call: Call<Result>, t: Throwable) { Toast.makeText(this@dakoku_page, "通信エラー", Toast.LENGTH_SHORT).show() Log.e("TEST", "通信エラー", t) } }) } } }
sample.php
<?php // 文字化け対策 $options = array(PDO::MYSQL_ATTR_INIT_COMMAND=>"SET CHARACTER SET 'utf8'"); // PHPのエラーを表示するように設定 error_reporting(E_ALL & ~E_NOTICE); $json = file_get_contents('php://input'); $data = json_decode($json, true); if ($data["btnId"] == "inBtn") { if ($data["time"] == "12:34" && $data["id"] == "1111" && $data["code"] == "22") { print'['; print'{'; print'"name": "アンコール・ワット",'; print'"imageName": "angkor",'; print'"description": "アンコール・ワットは、カンボジア北西部に位置するユネスコの世界遺産であるアンコール遺跡の一つであり、その遺跡群を代表する寺院。ヒンドゥー教寺院として作られたが、16世紀後半に仏教寺院に改修され、現在も上座部仏教寺院となっている。",'; print'"kind": "文化遺産"'; print'},'; print'{'; print'"name": "ホースシューベンド",'; print'"imageName": "horseshoebend",'; print'"description": "ホースシューベンド(Horseshoe Bend)とは、アメリカ合衆国アリゾナ州ページの町付近にある、コロラド川が蹄鉄(horseshoe)の形に穿入蛇行している場所の名前である。グレンキャニオンダムとパウエル湖から少し下流、ページの南約6キロメートルに位置している。国道89号線から1.2キロメートル歩くとたどり着ける。",'; print'"kind": "自然・公園"'; print'}'; print']'; }
jsonの中身を見やすく
[ { "name": "アンコール・ワット", "imageName": "angkor", "description": "アンコール・ワットは、カンボジア北西部に位置するユネスコの世界遺産であるアンコール遺跡の一つであり、その遺跡群を代表する寺院。ヒンドゥー教寺院として作られたが、16世紀後半に仏教寺院に改修され、現在も上座部仏教寺院となっている。", "kind": "文化遺産" }, { "name": "ホースシューベンド", "imageName": "horseshoebend", "description": "ホースシューベンド(Horseshoe Bend)とは、アメリカ合衆国アリゾナ州ページの町付近にある、コロラド川が蹄鉄(horseshoe)の形に穿入蛇行している場所の名前である。グレンキャニオンダムとパウエル湖から少し下流、ページの南約6キロメートルに位置している。国道89号線から1.2キロメートル歩くとたどり着ける。", "kind": "自然・公園" } ]
まだ回答がついていません
会員登録して回答してみよう