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

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

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

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

Android

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

Android Studio

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

Q&A

解決済

2回答

1059閲覧

for文で量産したtextViewを区別したい

son000

総合スコア5

Java

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

Android

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

Android Studio

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

0グッド

0クリップ

投稿2018/04/27 13:12

ボタンを押したときにid=6のtextViewのtextを1に変更したい
(id=6のtextViewが押された時ではない)

lang

1LinearLayout.LayoutParams textViewLayoutParams = new LinearLayout.LayoutParams( 2 LinearLayout.LayoutParams.WRAP_CONTENT, 3 LinearLayout.LayoutParams.WRAP_CONTENT); 4 textViewLayoutParams.setMargins(100,0,0,0); 5 6 7 for (int p=0;p<10;p++){ 8 TextView textView = new TextView(getApplicationContext()); 9 textView.setId(p); 10 textView.setText(String.valueOf(p)); 11 textView.setLayoutParams(textViewLayoutParams); 12 layout.addView(textView); 13 } 14 15 Button button = new Button(getApplicationContext()); 16 button.setText("ok"); 17 button.setOnClickListener(new View.OnClickListener() { 18 @Override 19 public void onClick(View view) { 20 //id=6のtextViewのtextを変更したい 21 }

試したこと
・ボタンの変数名を変数で指定しようとした
できなかった
・ネットで調べた
有力な情報は見つけられなかった

よろしくお願いします

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

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

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

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

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

guest

回答2

0

色々やり方はありますし、「そもそも...」みたいなところもありますが、今の実装方法を踏襲すると下記で実現できそうです。

Android

1LinearLayout.LayoutParams textViewLayoutParams = new LinearLayout.LayoutParams( 2 LinearLayout.LayoutParams.WRAP_CONTENT, 3 LinearLayout.LayoutParams.WRAP_CONTENT); 4 textViewLayoutParams.setMargins(100,0,0,0); 5 6 TextView[] textViews = new TextViews[10](); 7 for (int p=0;p<10;p++){ 8 textViews[p] = new TextView(getApplicationContext()); 9 textViews[p].setId(p); 10 textViews[p].setText(String.valueOf(p)); 11 textViews[p].setLayoutParams(textViewLayoutParams); 12 layout.addView(textViews[p]); 13 } 14 15 Button button = new Button(getApplicationContext()); 16 button.setText("ok"); 17 button.setOnClickListener(new View.OnClickListener() { 18 @Override 19 public void onClick(View view) { 20 //id=6のtextViewのtextを変更したい 21 textViews[6].setText(hoge); 22 23 //もしくは 24 for (TextView textView: textViews){ 25 if (textView.getId() == 6) { 26 textView.setText(hoge); 27 } 28 } 29 }

投稿2018/04/28 01:25

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

0

ベストアンサー

これは覚えたてで、鋭意勉強中ですね?色々と覚えて試行錯誤すると良いでしょう。
初心者なりの短期的解決方法と、中級者以上向けのやり方の2つのアイデアを紹介します。

初心者なりの短期的解決方法

TextView(ひいてはすべての View)には、Tag という目的に応じて自由に使える領域が用意されています。
setTag / getTag メソッドで情報の設定と取得ができます。これで TextView に印をつけます。
LinearLayout の要素をぐるぐる回し(getChildCount() と getChildAt() を使ってできると思う。たぶん。)、目的の Tag を持った TextView を探せるはずです。
探せれば設定するのは簡単ですね。
ちなみに Button にも設定できるので、どの TextView を操作する Button なのかといった制御にも使えると思います。onClick の View 引数経由で取得できるでしょう。

中級者以上向けのやり方

View を直接操作して値を書き換えようとするのは大変です。
でも、データだけを持った自作のクラスだったら、その操作は簡単に実装できますよね?
その自作クラスのデータを View にマッピング(レイアウトファイルにそのマッピングを書きます)して表示しようという考え方で作るのが最近は一般的です。
質問文のように View を直接操作するという書き方は古いやり方で減りつつあります。
データバインディングを勉強しましょう。

データバインディングを使ってどんな感じに作るかポイントを以下に列挙します。

  • List<String> 型のデータを持つ ViewModel を作る。
  • 以上の ViewModel のデータを ListView にバインドして表示する(Adapter 経由のバインディングになると思う)。
  • ViewModel に List<String> のデータを書き換える目的のメソッドを作る(List 型の操作を書くくのはとても簡単でしょう?)。
  • 以上のメソッドを Button のイベントにバインドする。

投稿2018/04/27 16:19

編集2018/04/27 16:29
toydev

総合スコア297

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問