質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

1回答

499閲覧

APIの情報をそのまま反映させる方法

syyyow

総合スコア28

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Android

Androidは、Google社が開発したスマートフォンやタブレットなど携帯端末向けのプラットフォームです。 カーネル・ミドルウェア・ユーザーインターフェイス・ウェブブラウザ・電話帳などのアプリケーションやソフトウェアをひとつにまとめて構成。 カーネル・ライブラリ・ランタイムはほとんどがC言語/C++、アプリケーションなどはJavaSEのサブセットとAndroid環境で書かれています。

Android Studio

Android Studioは、 Google社によって開発された、 Androidのネイティブアプリケーション開発に特化した統合開発ツールです。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

0グッド

0クリップ

投稿2018/07/16 00:24

編集2018/07/16 01:31

webで拾った一例です。
クリックアクションは必要なく、そのままAPIで引っ張ってきた文字や写真を表示したいのですが
この点どのように変更すればできますでしょうか?
btn.setOnClickListenerが
クリックされたらAPIを叩くとしているのはわかります。

java

1 2MainActivity.java 3 4import android.os.AsyncTask 5import android.support.v7.app.AppCompatActivity 6import android.os.Bundle 7import kotlinx.android.synthetic.main.activity_main.* 8import org.json.JSONArray 9import org.json.JSONException 10import org.json.JSONObject 11import java.io.BufferedReader 12import java.io.IOException 13import java.io.InputStreamReader 14import java.net.HttpURLConnection 15import java.net.MalformedURLException 16import java.net.URL 17 18 19class MainActivity : AppCompatActivity() { 20 21 override fun onCreate(savedInstanceState: Bundle?) { 22 super.onCreate(savedInstanceState) 23 setContentView(R.layout.activity_main) 24 25 btn.setOnClickListener { 26 //ボタンがクリックされたらAPIを叩く。 27 HitAPITask().execute("https://api.bitflyer.jp/v1/getmarkets") 28 } 29 } 30 31 //後からここにinner classを作ります。 32 inner class HitAPITask: AsyncTask<String, String, String>(){ 33 34 override fun doInBackground(vararg params: String?): String? { 35 //ここでAPIを叩きます。バックグラウンドで処理する内容です。 36 var connection: HttpURLConnection? = null 37 var reader: BufferedReader? = null 38 val buffer: StringBuffer 39 40 try { 41 //param[0]にはAPIのURI(String)を入れます(後ほど)。 42 //AsynkTask<...>の一つめがStringな理由はURIをStringで指定するからです。 43 val url = URL(params[0]) 44 connection = url.openConnection() as HttpURLConnection 45 connection.connect() //ここで指定したAPIを叩いてみてます。 46 47 //ここから叩いたAPIから帰ってきたデータを使えるよう処理していきます。 48 49 //とりあえず取得した文字をbufferに。 50 val stream = connection.inputStream 51 reader = BufferedReader(InputStreamReader(stream)) 52 buffer = StringBuffer() 53 var line: String? 54 while (true) { 55 line = reader.readLine() 56 if (line == null) { 57 break 58 } 59 buffer.append(line) 60 //Log.d("CHECK", buffer.toString()) 61 } 62 63 //ここからは、今回はJSONなので、いわゆるJsonをParseする作業(Jsonの中の一つ一つのデータを取るような感じ)をしていきます。 64 65 //先ほどbufferに入れた、取得した文字列 66 val jsonText = buffer.toString() 67 68 //JSONObjectを使って、まず全体のJSONArrayを取ります。 69 val parentJsonObj = JSONArray(jsonText) 70 71 //今回のJSONは配列になっているので(データは一つですが)、全体のJSONObjectから、getJSONObjで配列0番目の"BTC/JPY"を取ります。 72 val parentJSONObject = parentJsonObj.getJSONObject(0) 73 74 //Product_codeのデータのtitle項目をStringで取ります。これで中身を取れました。 75 val product_code: String = parentJSONObject.getString("product_code") // => Your Name. 76 77 //product_codeでreturnしてあげましょう。 78 return "$product_code" // => Your Name. - 2016 79 80 //ここから下は、接続エラーとかJSONのエラーとかで失敗した時にエラーを処理する為のものです。 81 } catch (e: MalformedURLException) { 82 e.printStackTrace() 83 } catch (e: IOException) { 84 e.printStackTrace() 85 } catch (e: JSONException) { 86 e.printStackTrace() 87 } 88 //finallyで接続を切断してあげましょう。 89 finally { 90 connection?.disconnect() 91 try { 92 reader?.close() 93 } catch (e: IOException) { 94 e.printStackTrace() 95 } 96 } 97 //失敗した時はnullやエラーコードなどを返しましょう。 98 return null 99 } 100 //返ってきたデータをビューに反映させる処理はonPostExecuteに書きます。これはメインスレッドです。 101 override fun onPostExecute(result: String?) { 102 super.onPostExecute(result) 103 if(result == null) return 104 105 textView.text = result 106 } 107 } 108}
レスポンス [ { "product_code": "BTC_JPY" }, { "product_code": "FX_BTC_JPY" }, { "product_code": "ETH_BTC" }, { "product_code": "BTCJPY28APR2017", "alias": "BTCJPY_MAT1WK" }, { "product_code": "BTCJPY05MAY2017", "alias": "BTCJPY_MAT2WK" } ]

全体像はこうなっております。
OnClickListenerを消すと
その直後のinnerにエラーが出てしまいます。。
(Modifier 'liner' is not applicable inside 'file')

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

btn.setOnClickListener { //ボタンがクリックされたらAPIを叩く。 HitAPITask().execute("ここにURL") }

の部分を

HitAPITask().execute("ここにURL")

と書き換えれば、onCreateの中で「HitAPITask().execute("ここにURL")」が実行されます。

コードの全体像が判らないので、これが『APIの情報をそのまま反映させる』 (APIの情報って何? そのまま反映って、何を何に反映するというの?(括弧内は私の抱いた疑問です))とか『そのままAPIで引っ張ってきた文字や写真を表示』とかいう動作をするのかどうか不明ですが。

投稿2018/07/16 01:07

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

syyyow

2018/07/16 01:32

本文を編集いたしました。 OnClickListenerを消してしまいますと、 `inner`にエラーが出てしまいます、、、
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問