Android開発(switch文)について
Android開発(switch文)について
Androidアプリ開発における
listviewについて質問させてください。
現在、"東京","神奈川","千葉","埼玉","茨城","栃木","群馬"
画面から東京を選び、"新宿","上野","秋葉原"が表示されています。
public void onBackPressed を追加したことにより
一つ前の画面に戻る事ができたのですが
このような記述で問題ないでしょうか?
もっとシンプルなやり方があれば、アドバイス願います。
また、"新宿","上野","秋葉原"画面から
新宿を選んだ時は、shinjyuku.html
上野を選んだときは、ueno.html
秋葉原を選んだ時は、akihabara.html を表示したいのですが
どのタイミングで、switch文を入れれば良いのでしょうか?
■searchActivity.java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.*;
import android.widget.AdapterView.OnItemClickListener;
public class searchActivity extends Activity {
private ListView list;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
setContentView(R.layout.main);
String[] arr = {"東京","神奈川","千葉","埼玉","茨城","栃木","群馬"};
// コンポーネントの設定
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
setList2(arg3);
}
});
}
private void setList2(long id) {
String[] tokyo = {"新宿","上野","秋葉原"};
String[] kanagawa = {"横浜","桜木町","関内","新横浜"};
String[] chiba = {"千葉","市川","船橋"};
String[] saitama = {"大宮","浦和","蕨","川口・西川口"};
ArrayAdapter<String> adapter = null;
switch ((int)id) {
case 0:
adapter = new ArrayAdapter<String>(this, R.layout.list, tokyo);
break;
case 1:
adapter = new ArrayAdapter<String>(this, R.layout.list, kanagawa);
break;
case 2:
adapter = new ArrayAdapter<String>(this, R.layout.list, chiba);
break;
case 3:
adapter = new ArrayAdapter<String>(this, R.layout.list, saitama);
break;
}
list.setVisibility(View.GONE);
ListView list2 = (ListView)this.findViewById(R.id.list2);
list2.setAdapter(adapter);
list2.setVisibility(View.VISIBLE);
}
//ここを追加
@Override
public void onBackPressed() {
//メニュー画面に戻る(start)
setContentView(R.layout.main);
String[] arr = {"東京","神奈川","千葉","埼玉","茨城","栃木","群馬"};
list = (ListView)this.findViewById(R.id.list);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list, arr);
list.setAdapter(adapter);
list.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
setList2(arg3);
}
});
}
}
■main.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent" android:layout_height="fill_parent"
android:textSize="20sp"
android:background="#ffffff">
<ListView
android:id="@+id/list"
android:visibility="visible"
android:layout_height="fill_parent" android:layout_width="fill_parent"/>
<ListView
android:id="@+id/list2"
android:visibility="gone"
android:layout_width="fill_parent" android:layout_height="fill_parent"/>
</RelativeLayout>
■list.xml
<?xml version="1.0" encoding="utf-8"?>
<TextView
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textSize="20sp"
android:paddingTop="50.0px"
android:paddingLeft="20.0px"
android:background="#ffffff"
android:textColor="#000000"
/>
以上、宜しくお願いいたします。
補足
早速のご回答誠にありがとうございます。 使用しているAndroid 端末ですが、以下となります。 ご指摘いただいた felica 対応について調べてみましたが、どちらも国産で felica 対応してあると明記されていました。 - M357(富士通) Android 6.0.1 https://www.fmworld.net/product/phone/biz/m357/ felica 対応 https://www.fmworld.net/product/phone/biz/m357/spec.html?fmwfrom=m357_index - SO-02J(SONY) Android 8.0.0 https://www.sonymobile.co.jp/xperia/docomo/so-02j/ felica 対応 https://www.nttdocomo.co.jp/service/osaifu/compatible_model/index.html 気になるところとしては、使用しているタグが2つの規格をもっている所です。 -ISO/IEC14443 TypeB - ISO/IEC18092(FeliCa) https://artfinex.co.jp/wp/wp-content/uploads/2014/11/NFCBridge_V1.21.pdf データは felica 規格で保持していますので、上記Android 端末で felica データを読み込めればと思います。 気になるところとしては、プログラムで 読み込む規格を "NFCF(felica)"のみ制限した際に表示されるメッセージです。 “このタグに対応するアプリがインストールされていません” おそらく、Android OS が出しているメッセージかと考えられます。 なにかご存知でございましたらご連絡いただけますと幸いです。