前提・実現したいこと
AndroidStudioにてKotlinでアプリ開発を行っています。
実装したい内容としてはボタンを押すと得点が追加され、RETURNボタンを押すと最新の得点が減算される処理を実装したいです。
■実装イメージ
①初期表示
得点:0
②「ポイント」ボタン押下
得点:01
③「ポイント」ボタン押下
得点:012
④「RETURN」ボタン押下
得点:01
⑤「RETURN」ボタン押下
得点:0
⑥「ポイント」ボタン押下
得点:01
発生している問題・エラーメッセージ
困っているのは上記処理を行うと、⑤で「ポイント」ボタンを押下すると”得点:01”が
表示されると思っていたのですが、以下の処理で値が格納されないのか"1"が表示されません。
val tr1 = vg1.getChildAt(serve_count-1) as TableRow
((tr1.getChildAt(0)) as TextView).setText(player1_point.toString())
該当のソースコード
■ソースのイメージ
②③「ポイント」ボタン押下
//Layoutに配置したTableRow(player1.table)をviewに設定
val vg1 = findViewById<View>(R.id.player1_table) as ViewGroup
//vg1にレイアウトxml(score_table_1)のtableを追加
getLayoutInflater().inflate(R.layout.score_table_1, vg1)
//vg1の最後のカラム(serve_count-1)をtr1に取得し、得点をtextviewとして追記する。
val tr1 = vg1.getChildAt(serve_count-1) as TableRow
((tr1.getChildAt(0)) as TextView).setText(player1_point.toString())
tr1.setId(serve_count);
④⑤「RETURN」ボタン押下
//Layoutに配置したTableRow(player1.table)をviewに設定
val vg1 = findViewById<View>(R.id.player1_table) as ViewGroup
//TableRowの一番後ろのId(serve_count)を指定してtr1に格納
val tr1 = vg1.getChildAt(serve_count) as TableRow;
//上記で取得したtr1を削除
tr1.setVisibility(View.GONE);
⑥「ポイント」ボタン押下
//Layoutに配置したTableRow(player1.table)をviewに設定
val vg1 = findViewById<View>(R.id.player1_table) as ViewGroup
//vg1にレイアウトxml(score_table_1)のtableを追加
getLayoutInflater().inflate(R.layout.score_table_1, vg1)
//vg1の最後のカラム(serve_count-1)をtr1に取得し、得点をtextviewとして追記する。
val tr1 = vg1.getChildAt(serve_count-1) as TableRow
((tr1.getChildAt(0)) as TextView).setText(player1_point.toString())
tr1.setId(serve_count);
試したこと
tr1.setId(serve_count);にてTableRowのカラムにIdが付与されているか確認するために
以下の記述にてIdを出力しているのですが、想定したIdは出力されているようです。
val scoreid1:Int = tr1.getId()
val scoreid_text1 : String = scoreid1.toString()
補足情報(FW/ツールのバージョンなど)
いまいち、inflateで追加されたtableRowのIdの振られ方がよく分かりません。
あとは、tr1.setVisibility(View.GONE);にてviewを削除した際にviewのIdがどうなるのかもよく分かりません。
なので、inflateにて追加したviewにtr1.setId(serve_count);にてIdを明示的に指定したつもりなのですが
【予想】
⑥「ポイント」ボタン押下
得点:01
【実態】
⑥「ポイント」ボタン押下
得点:0x
(xはxmlで指定した初期値)
⑦「ポイント」ボタン押下
得点:0xx
(xはxmlで指定した初期値)
⑧「ポイント」ボタン押下
得点:03xx
(xはxmlで指定した初期値)
この⑦にて3が最初のほうに入ってくるのも分かりません。
実装したい内容が実現できれば他の方法も考えてみたのですが、他にいい方法があるのでしょうか。
あなたの回答
tips
プレビュー