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

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

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

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

Q&A

解決済

1回答

397閲覧

[Kotlin]ListViewの一番下にスクロールしたとき、一番上に戻るボタンをListViewの一番下に設置したい

yuzuhina

総合スコア1

Kotlin

Kotlinは、ジェットブレインズ社のアンドリー・ブレスラフ、ドミトリー・ジェメロフが開発した、 静的型付けのオブジェクト指向プログラミング言語です。

ArrayList

Java用のタグです。arrayListはListインターフェースを実装した、リサイズ可能な配列用クラスです。

0グッド

0クリップ

投稿2023/10/30 05:48

編集2023/10/30 05:50

実現したいこと

ListViewを作成しました。
ListViewを一番下までスクロールしたとき、
Listの一番下の行に上に戻るボタンが出てくるように設置したいです。

前提

Android Studioで[Kotolin]のコードを作成しています。
ListViewを使って上記の内容を実現したいのですが、解決できません。
MainActivity.xmlとは別にrow.xml(テキストとボタンを設置)を作成し、
Adapterでrow.xmlのテキストに値を入れ、ListViewを形成しています。

該当のソースコード

ボタンのクリックイベントと上に戻るメソッドは分かったので、
動作はするのですが、「スクロールをしたときにリストの一番下に現れる」
という書き方がわからないです。

//リストTopに戻るボタンイベント
val btnUp: Button = findViewById(R.id.btnUp)
btnUp.setOnClickListener {
listView.setSelection(0)
}

試したこと

レイアウトの方でListViewの一番下にボタンが設置できないか試みました。
・レイアウト上で見えるようListViewの下の位置に配置した場合
→リストをスクロールする前に上に戻るボタンが表示されてしまいます。
・レイアウト上では見えないようListViewの下の位置に配置した場合
→リストをスクロールしても上に戻るボタンが表示されません。
レイアウトからリストの一番下にボタンを設置するのは無理なのかと思い、
ListViewの一番下にrow.xmlとはまた別のレイアウトを作成してListViewの一番下に
設定してみてはどうかと思ったのですが、方法がわかりません。
(そのようなことが可能なのかもわかりません。)
その他の方法でもタイトルのような動作が可能であれば方法をご教授ください。

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

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

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

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

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

yuzuhina

2023/10/31 01:14

ご回答ありがとうございます。 footerにすることでできなかった状態の実装が可能になりました! すべてWeb検索で作成してみているので、検索ワードにfooterというワードがうかんでおらず、大変助かりました。ありがとうございます。
yuzuhina

2023/10/31 01:22

コメント欄にご回答いただいていますが、自己解決としてもよろしいのでしょうか…?
guest

回答1

0

自己解決

質問欄にご回答いただきまして、ListViewのfooterに「一番上に戻る」ボタンを追加することで、問題解決することができました。
以下、書き方がこれで最適かは分かりませんが、MainActivityにボタンのクリックイベントを書き込むことで、「リストを一番下までスクロールしたらボタンが表示される。→そのボタンを押すとリストの一番上に戻る。」という動作が実現しました。

まず、footer用にfooter.xmlを作成。上に戻るボタンを設置。

//MainActivityへfooter.xmlのレイアウトを呼び出し
val footer = layoutInflater.inflate(R.layout.footer, null) as View
//ListViewにfooter.xmlのレイアウトをfooterとして追加
listView.addFooterView(footer)

//footer.xmlに設置した上に戻るボタンのクリックイベント
val buttonUp: Button = footer.findViewById(R.id.buttonUp)
buttonUp.setOnClickListener {
listView.setSelection(0)
}
こんな書き方で動作しました。

投稿2023/11/01 02:21

編集2023/11/01 02:23
yuzuhina

総合スコア1

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.41%

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

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

質問する

関連した質問