LinkedHashMapとListView、複数のActivityを行き来するIntentを練習します。
Q1
リストビューを使い都道府県の一覧を表示する。
項目をクリックすると画面遷移し、その都道府県の県庁所在地を表示する。
Backボタンで戻れるようにすること。
作成のさいには以下のMapを使っていよい。
Map<String,String> prefData=new LinkedHashMap<>(); prefData.put("北海道(ほっかいどう)","札幌(さっぽろ)"); prefData.put("青森県(あおもり)","青森(あおもり)"); prefData.put("岩手県(いわて)","盛岡(もりおか)"); prefData.put("宮城県(みやぎ)","仙台(せんだい)"); prefData.put("秋田県(あきた)","秋田(あきた)"); prefData.put("山形県(やまがた)","山形(やまがた)"); prefData.put("福島県(ふくしま)","福島(ふくしま)"); prefData.put("茨城県(いばらき)","水戸(みと)"); prefData.put("栃木県(とちぎ)","宇都宮(うつのみや)"); prefData.put("群馬県(ぐんま)","前橋(まえばし)"); prefData.put("埼玉県(さいたま)","さいたま"); prefData.put("千葉県(ちば)","千葉(ちば)"); prefData.put("東京都(とうきょう)","東京(とうきょう)"); prefData.put("神奈川県(かながわ)","横浜(よこはま)"); prefData.put("新潟県(にいがた)","新潟(にいがた)"); prefData.put("富山県(とやま)","富山(とやま)"); prefData.put("石川県(いしかわ)","金沢(かなざわ)"); prefData.put("福井県(ふくい)","福井(ふくい)"); prefData.put("山梨県(やまなし)","甲府(こうふ)"); prefData.put("長野県(ながの)","長野(ながの)"); prefData.put("岐阜県(ぎふ)","岐阜(ぎふ)"); prefData.put("静岡県(しずおか)","静岡(しずおか)"); prefData.put("愛知県(あいち)","名古屋(なごや)"); prefData.put("三重県(みえ)","津(つ)"); prefData.put("滋賀県(しが)","大津(おおつ)"); prefData.put("京都府(きょうと)","京都(きょうと)"); prefData.put("大阪府(おおさか)","大阪(おおさか)"); prefData.put("兵庫県(ひょうご)","神戸(こうべ)"); prefData.put("奈良県(なら)","奈良(なら)"); prefData.put("和歌山県(わかやま)","和歌山(わかやま)"); prefData.put("鳥取県(とっとり)","鳥取(とっとり)"); prefData.put("島根県(しまね)","松江(まつえ)"); prefData.put("岡山県(おかやま)","岡山(おかやま)"); prefData.put("広島県(ひろしま)","広島(ひろしま)"); prefData.put("山口県(やまぐち)","山口(やまぐち)"); prefData.put("徳島県(とくしま)","徳島(とくしま)"); prefData.put("香川県(かがわ)","高松(たかまつ)"); prefData.put("愛媛県(えひめ)","松山(まつやま)"); prefData.put("高知県(こうち)","高知(こうち)"); prefData.put("福岡県(ふくおか)","福岡(ふくおか)"); prefData.put("佐賀県(さが)","佐賀(さが)"); prefData.put("長崎県(ながさき)","長崎(ながさき)"); prefData.put("熊本県(くまもと)","熊本(くまもと)"); prefData.put("大分県(おおいた)","大分(おおいた)"); prefData.put("宮崎県(みやざき)","宮崎(みやざき)"); prefData.put("鹿児島県(かごしま)","鹿児島(かごしま)"); prefData.put("沖縄県(おきなわ)","那覇(なは)");
[実行例]
スタート画面
項目をクリックすると画面遷移して、県庁所在地をっ表示する。
Backボタンを押すと最初の画面に戻る。
●activity_main.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/lv" android:layout_width="0dp" android:layout_height="0dp" android:layout_marginBottom="8dp" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> </android.support.constraint.ConstraintLayout>
●MainActivity.java
import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ListView; import java.util.ArrayList; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); final Map<String,String> prefData=new LinkedHashMap<>(); prefData.put("北海道(ほっかいどう)","札幌(さっぽろ)"); prefData.put("青森県(あおもり)","青森(あおもり)"); prefData.put("岩手県(いわて)","盛岡(もりおか)"); prefData.put("宮城県(みやぎ)","仙台(せんだい)"); prefData.put("秋田県(あきた)","秋田(あきた)"); prefData.put("山形県(やまがた)","山形(やまがた)"); prefData.put("福島県(ふくしま)","福島(ふくしま)"); prefData.put("茨城県(いばらき)","水戸(みと)"); prefData.put("栃木県(とちぎ)","宇都宮(うつのみや)"); prefData.put("群馬県(ぐんま)","前橋(まえばし)"); prefData.put("埼玉県(さいたま)","さいたま"); prefData.put("千葉県(ちば)","千葉(ちば)"); prefData.put("東京都(とうきょう)","東京(とうきょう)"); prefData.put("神奈川県(かながわ)","横浜(よこはま)"); prefData.put("新潟県(にいがた)","新潟(にいがた)"); prefData.put("富山県(とやま)","富山(とやま)"); prefData.put("石川県(いしかわ)","金沢(かなざわ)"); prefData.put("福井県(ふくい)","福井(ふくい)"); prefData.put("山梨県(やまなし)","甲府(こうふ)"); prefData.put("長野県(ながの)","長野(ながの)"); prefData.put("岐阜県(ぎふ)","岐阜(ぎふ)"); prefData.put("静岡県(しずおか)","静岡(しずおか)"); prefData.put("愛知県(あいち)","名古屋(なごや)"); prefData.put("三重県(みえ)","津(つ)"); prefData.put("滋賀県(しが)","大津(おおつ)"); prefData.put("京都府(きょうと)","京都(きょうと)"); prefData.put("大阪府(おおさか)","大阪(おおさか)"); prefData.put("兵庫県(ひょうご)","神戸(こうべ)"); prefData.put("奈良県(なら)","奈良(なら)"); prefData.put("和歌山県(わかやま)","和歌山(わかやま)"); prefData.put("鳥取県(とっとり)","鳥取(とっとり)"); prefData.put("島根県(しまね)","松江(まつえ)"); prefData.put("岡山県(おかやま)","岡山(おかやま)"); prefData.put("広島県(ひろしま)","広島(ひろしま)"); prefData.put("山口県(やまぐち)","山口(やまぐち)"); prefData.put("徳島県(とくしま)","徳島(とくしま)"); prefData.put("香川県(かがわ)","高松(たかまつ)"); prefData.put("愛媛県(えひめ)","松山(まつやま)"); prefData.put("高知県(こうち)","高知(こうち)"); prefData.put("福岡県(ふくおか)","福岡(ふくおか)"); prefData.put("佐賀県(さが)","佐賀(さが)"); prefData.put("長崎県(ながさき)","長崎(ながさき)"); prefData.put("熊本県(くまもと)","熊本(くまもと)"); prefData.put("大分県(おおいた)","大分(おおいた)"); prefData.put("宮崎県(みやざき)","宮崎(みやざき)"); prefData.put("鹿児島県(かごしま)","鹿児島(かごしま)"); prefData.put("沖縄県(おきなわ)","那覇(なは)"); ListView lv=(ListView)findViewById(R.id.lv); final List<String> list=new ArrayList<>(); for(String key:prefData.keySet()){ list.add(key); } ArrayAdapter<String> adapter=new ArrayAdapter( this, android.R.layout.simple_list_item_1, list ); lv.setAdapter(adapter); lv.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent i=new Intent(MainActivity.this,SubActivity.class); String pref=list.get(position); i.putExtra("capital",prefData.get(pref)); startActivity(i); } }); } }
●activity_sub.xml
<?xml version="1.0" encoding="utf-8"?> <android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="match_parent" > <TextView android:id="@+id/tvResult" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" android:text="TextView" android:textSize="30sp" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toTopOf="parent" /> <Button android:id="@+id/button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginLeft="8dp" android:layout_marginRight="8dp" android:layout_marginTop="8dp" android:onClick="btBack" android:text="Back" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@+id/tvResult" /> </android.support.constraint.ConstraintLayout>
●SubActivity.java
import android.content.Intent; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.TextView; public class SubActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_sub); Intent i= this.getIntent(); String capital=i.getStringExtra("capital"); TextView tvResult=(TextView)findViewById(R.id.tvResult); tvResult.setText(capital); } public void btBack(View v){ this.finish(); } }
コメント