目次
contextについて
アプリケーションの現在の情報をインスタンスとして保持するもの。
明示的にActivity内で利用すると現在の画面情報を取得できたりする。
Activityが破棄されるとき、Activity内のContextも破棄されるがContextを参照するものを静的な変数にしていたら古い参照が残り続けてGCが行われず、メモリーリークの危険がある。
とかなんとか・・・・ようわからんので参考サイト・・・
Contextとは?
Contextとは
[Android] Contextの持ち方~ApplicationContext
Android 開発で気をつけたいこと 〜変数名と Context について〜
ブラウジングする
ブラウザアプリ作るよ。
activity_main.xmlにWebView設置。
読み込みURLの指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 |
import android.os.Bundle; import android.app.Activity; import android.webkit.WebView; public class MainActivity extends Activity { WebView wv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findview(); addEvent(); } private void findview() { wv = (WebView) findViewById(R.id.webView1); } private void addEvent() { wv.loadUrl("http://www.example.com/"); } } |
通信可能な状態にする
AndroidManifest.xmlを開いて > 許可 > 追加 > Uses Permission > OK > 許可枠右隣のAttribute for Uses Permission > Name > android.permission.INTERNETを選択
コードのuses-sdkの下に一行追加された。
1 2 3 4 |
<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="17" /> <uses-permission android:name="android.permission.INTERNET"/> |
load.Urlの中身を
wv.loadUrl("file:///android_asset/example.html");
と指定してやるとパッケージのassetsフォルダ内のhtmlを読み込むことも出来る。assetsは自分の作ったデータファイルを置くところ。
ListViewを使う
String Arrayの作成
string.xmlのリソースタブ > 追加 > String Array > OK > Nameを入力 > 作ったString Array選択状態で追加 > Item > OK > Nameを入力
下記コードが追加される
1 2 3 4 5 6 |
<string name="hello_world">Hello world!</string> <string-array name="Team"> <item>item1</item> <item>item2</item> <item>item3</item> </string-array> |
ListViewの配置
activity_main.xml(グラフィカル・レイアウト)
コンポジット > ListViewをD&D > PropertiesのEntries > @array/String Arrayの名前
コードの入力
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
import 色々; public class MainActivity extends Activity { private ListView lv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findView(); addEvent(); } private void findView() { lv = (ListView) findViewById(R.id.listView1); } private void addEvent() { // クリックしたリストアイテムをトーストする lv.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> arg0, View view, int position, long arg3) { Toast.makeText(MainActivity.this, ((TextView) view).getText().toString(), Toast.LENGTH_SHORT).show(); } }); } } |
ArrayAdapterを使う
デザインパターンの一つAdapterパターンを使ってリストをビューに渡す、らしい。
相変わらずあんまり理解が進んでません。サーセン。
以下コード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
import 色々; public class MainActivity extends Activity { private ListView lv; ArrayAdapter<String> adapter; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); findView(); } private void findView() { lv = (ListView) findViewById(R.id.listView1); ArrayList<String> data = new ArrayList<String>(); data.add("a"); data.add("b"); data.add("c"); adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, data); lv.setAdapter(adapter); } } |
リファレンスのArrayAdapterによると第一引数:context、第二引数:リソース(見た目、今回はレイアウト)、第三引数:リストのオブジェクト(データ)
今日作ったもの
- ブラウザ
- 野菜の情報(値段、産地)表示
今日のひとこと
使うんだってAdapter(困
こういうことプログラミングには結構あるよね。概念が抽象的すぎてうんたらかんたら。とりあえずこういうものだと思って覚えるみたいな。
教えるってのはなかなか大変な作業だよなと思う。改めて。
コメント
No Trackbacks.