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"
/>
以上、宜しくお願いいたします。
お礼
ご回答ありがとうございます!! どうやら、ビルドパスの問題のようでした… おかげさまで解決致しました!