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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

2回答

4047閲覧

listviewが多い場合 OnItemClickで飛ばすintentの設定方法

masaakitsuyoshi

総合スコア102

Java

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

Android

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

Android Studio

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

0グッド

1クリップ

投稿2016/03/28 07:49

編集2016/03/28 10:26

プロフィールリストをlistviewで作成して、
各メンバーのプロフィールをタップすると、別のintentに飛ばし、プロフィールの詳細を表示させたいです。

メンバーの配列は10個くらいで、飛ぶ先のアクティヴィティのレイアウトは下記のような感じにしたいです。

タップしたitem(OnItemClick使って)によって

「名前、役職、下記のテキスト 画像など」
を変えたいです。

仮にメンバー(LIstview)が100人いた場合、
「intentを100個用意する」んじゃなく、もっと簡単でスッキリさせる方法ありますか?

追記部分

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent sub = new Intent(); sub.setClassName("com.example.tsuyoshiokaprofile", "com.example.tsuyoshiokaprofile.SubActivity"); startActivity(sub); long get_id = id; switch(get_id){ case 0: text.setText(R.string.profil_name_yoshioka); text2.setText(R.string.job_yoshioka); text3.setText(R.string.description_yoshioka); break; } } });

switchでメンバー分の分岐を用意しようかと思うのですが、考え方はあってますでしょうか?

switchの引数部分にlongを入れられない、とエラーが出ています。

onitemclickでタップされた項目の「id」と「switchを対応させる方法」が今ひとつわからないです。

追記3

遷移前

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { Intent sub = new Intent(); sub.setClassName("com.example.tsuyoshiokaprofile", "com.example.tsuyoshiokaprofile.SubActivity"); startActivity(sub); sub.putExtra("list_names", listView.getItemAtPosition(position).toString()); } });
public class SubActivity extends AppCompatActivity{ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sub_activity); TextView text = (TextView) findViewById(R.id.textView); /* TextView text2 = (TextView) findViewById(R.id.textView2); TextView text3 = (TextView) findViewById(R.id.textView3); ImageView image = (ImageView) findViewById(R.id.imageView); */ Intent sub = getIntent(); String name = sub.getStringExtra("list_names"); text.setText(name); } }

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

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

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

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

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

guest

回答2

0

んー、多分、メンバークラスを作って、それをListviewにした内容をSubActivityに渡したほうがすっきりする感じがしますね…

Java

1List<MemberData>listItems = new ArrayList<MemberData>(); 2item = new MemberData("田中", "一般社員", "開発部で働いてます", R.drawable.tanaka); 3listItems.add(item); 4item = new MemberData("鈴木", "一般社員", "制作部で働いてます", R.drawable.suzuki); 5listItems.add(item);

みたいな感じでListViewに渡すリストを作っておいて

Java

1MemberListAdapter memberListAdapater = new MemberListAdapter(this, 0, listItems); 2listView.setAdapter(memberListAdapater);

とListViewにデータをセットしてあげて

Java

1 listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { 2 @Override 3 public void onItemClick(AdapterView<?> parent, View view, 4 int position, long id) { 5 // クリックされたアイテムを取得 6 MemberData item = (MemberData) listView.getItemAtPosition(position); 7 8 //プロフィール詳細画面表示用の受け渡しデータ作成 9 Bundle bundle = new Bundle(); 10 bundle.putString("name", item.getName()); 11 bundle.putString("title", item.getTitle()); 12 bundle.putString("text", item.getText()); 13 bundle.putInt("image_id", item.getImageId()); 14 Intent intent = new Intent(this, SubActivity.class); 15 intent.putExtras(bundle); 16 17 //プロフィール詳細画面へ遷移 18 startActivity(intent); 19 } 20 }); 21

みたいにデータを受け渡すような感じ?

投稿2016/03/29 01:40

ykiyota

総合スコア21

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

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

masaakitsuyoshi

2016/03/29 03:26

回答ありがとうございます。 メンバークラス使ったことないので、調べてみます!
swordone

2016/03/29 07:06

メンバークラスをSerializableにしてやるともっと簡単にできそう
ykiyota

2016/03/29 10:25

あぁ、メンバークラスって言い方が悪かったですね。 単に > 「名前、役職、下記のテキスト 画像など」 を管理するクラスを作ってあげておいて、 そのデータを元に詳細画面に遷移するほうが自然かなという意味です。
ykiyota

2016/03/29 10:30

> メンバークラスをSerializableにしてやるともっと簡単にできそう あ、そうですね。 メンバー管理用のクラスを作成するときにSerializableで作っておけば、 プロフィール詳細画面表示用の受け渡しデータ作成の部分がスッキリ書けると思います。
masaakitsuyoshi

2016/03/30 05:17

「名前、役職、下記のテキスト 画像など」 を管理するクラスを作ってあげておいて、 そのデータを元に詳細画面に遷移するほうが自然かなという意味です。 自分でクラス作れってことですね。 コメントした後に気づきました!
guest

0

ベストアンサー

Intentに遷移先を一意に表すデータ(今回なら名前とか?)をセットし、遷移先のActivityでセットされているデータをもとに表示を変えたらいいと思いますよ。

投稿2016/03/28 07:54

yona

総合スコア18155

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

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

masaakitsuyoshi

2016/03/28 08:57

追記しました。 こういう感じでしょうか?
yona

2016/03/28 09:12

これは遷移前のActivityですよね? ここでやるべきことはどの行が押されたかを特定し、次のActivityに教えることです。そのため、ここにはTextViewを変更する処理は不要です。 AdapterView#getItemAtPositionにpositionを与えるとクリックした行にセットされている文字列が取得できます。 この取得した文字列を遷移先に渡してください。 確認ですが、最終的にActivityは何個になる予定ですか?
masaakitsuyoshi

2016/03/28 09:47

>>AdapterView#getItemAtPositionにpositionを与えるとクリックした行にセットされている文字列が取得できます。 この取得した文字列を遷移先に渡してください。 ご回答ありがとうございます。 変遷前のアクティビティです。 やってみます。 >>確認ですが、最終的にActivityは何個になる予定ですか? アクティビティは、変遷前と変遷後の2個をとりあえず考えています。 分岐(メンバーによって表示を変える内容)は10数個くらいです。
yona

2016/03/28 09:53

遷移前に取得したデータをIntentにセットし、次のActivityを起動する。次のActivity#onCreateでIntentにセットされているデータを取得し、Activityの内容を変更する。
masaakitsuyoshi

2016/03/28 10:12

>>遷移前に取得したデータをIntentにセットし、次のActivityを起動する。次のActivity#onCreateでIntentにセットされているデータを取得し 調べてみます。
masaakitsuyoshi

2016/03/28 10:27

追記しました! こんな感じでしょうか?
yona

2016/03/29 01:47

startActivityの前にputExtraをした方がいいと思いますよ。 遷移後は名前をもとに表示する内容を特定し、表示すればいいですよ。 このように最低限のデータを渡すことで遷移先に表示する内容が変わった時に遷移前のActivityを変更する必要がなくなります。
masaakitsuyoshi

2016/03/29 03:34

listviewに表示されている名前部分を(position)で取得して、 遷移後のintentに渡し、タップした項目によって表示する名前を変えることができました! 他のテキスト、画像部分も変えていきたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問