投稿

2月, 2021の投稿を表示しています

RecyclerViewのスクロール末尾に空白を追加する【AndroidStudio】

イメージ
一覧表示っていうのはどのシステムでも必要になると思いますが、 AndroidStudioでテンプレートを見ていたところ一覧表示っぽいのにRecyclerViewがあったのでその使い方を調べてみました。 基本的な手順は、とても詳しく公式の記事に書いてあるのでザックリです… ・XML上にRecyclerViewを配置。 ・Actitvity(Fragment)内で、RecyclerViewにRecyclerView.Adapterをセット。 ・RecyclerView.Adapter内で、1要素のレイアウト(ViewHolder)を定義を行う。 ・RecyclerView.Adapter内の「onBindViewHolder」で要素内へ値を設定する。   参考: RecyclerView で動的リストを作成する いろいろ触っていく中で、一覧を画面の最下段に表示する場合 レイアウトとしてスクロール末尾にちょっと空白を作りたいなって思ったので調べてみました。  ※やりたいことはこんな感じ↓ 結論として、RecyclerViewに「android:clipToPadding="false"」を指定してあげればよい。 <androidx.recyclerview.widget.RecyclerView android :id ="@+id/list" android :layout_width ="match_parent" android :layout_height ="match_parent" android :clipToPadding ="false" android :paddingBottom ="100dp" />  参考: 【Kotlin】ListViewやRecyclerViewの上部・下部に余白を表示する方法 ちょっと補足。 [clipToPadding]はデフォルトでtrue。 [clipToPadding]が有効になっている場合はリストの表示エリアに対してpaddingが作用するが、 無効の場合は、リストの要素全体のエリアに対してpaddingが作用する様子。 画面のデザインを考え

SQLServerのバックアップファイルは上位互換がないよって話と、なんとかデータコピーしたらいろいろ躓いたよって話【SQLServer】

 先日、業務にて何気なくSQLServer2016の環境から取得したバックアップファイルを SQLServer2012の環境へ復元(RESTORE DATABASE)したところエラーになった。 メッセージは確か 「SqlError:データベースはバージョン(13.xxx)実行中のサーバーにバックアップされました。このバージョンは、このサーバー(バージョン11.xxxを実行)とは互換性がありません。」 みたいな感じだった。 調べてみると普通にSQLServerには上位互換がないため、新しいバージョンのバックアップファイルでは古いバージョンで復元できない様子。  参考: SQL Serverのバージョンが異なるため復元に失敗する しかし、何とかSQLServer2012上のDBに対象データを復元したかったのでいろいろ試行錯誤をしてみました。 その結果、SSMSを使ってデータの複製が行えたのでその時の作業内容と詰まったことを書きます。 まず、試したこと。 SQLServer2016のDBへ接続し、「タスク > データのエクスポート」から 元「SQLServer2016」→先「SQLServer2012」を指定しエクスポートを実行した。 このとき、エクスポート先のDBにはテーブルを未作成の状態だったのでデータエクスポート時にテーブルの作成も合わせて行うよう指定していた。 簡単に行けそうだと思った矢先、不思議なことが起こった。 まず、datetime型のカラムのエクスポートにてエラーが発生した。  ※エラーメッセージは、型変換失敗みたいな感じのやつだった?と思う。 調べてみると、エクスポートの設定(マッピングの設定)でdatatimeのカラムがsmalldatetimeと定義されており、作成されたテーブルの型に元データが格納できずエラーになった。 検証としてSQLServer2012からSQLServer2012に対してデータエクスポートをしたが事象は発生せず、SQLServer2016からSQLServer2012に対してのみ発生した。 意味がわからないので、SQLServerの不具合と勝手に考えるようにした。 (ちなみに、numeric型がdecimal型に変わっていたりもした。) 対応としては、マッピングで正しい型を定義してあげることでエラーなくエクスポートが行えた。

エラー「The application's minSdkVersion is newer than the device API level.」の対応【AndroidStudio】

 今日はBasicActivityのテンプレートをもとに 画面を追加したりもろもろ触ってみた。 いざ、エミュレーターで動かそうと思ったら エラー「The application's minSdkVersion is newer than the device API level.」が発生した。 (つい先日も同一のエラーが出て調べてた…) ※参考サイト Android StudioでAPIレベルを下げる ・File > Project Structure ・Project Structure > (メニュー)Modules > (タブ)Default Config ・設定内の「Min SDK Version」を修正する。 (作成時点は、「Target SDK Version」と同じになっている模様。) 調べればすぐに出てくるけれども 知識として設定がどこで変更できるかは覚えていたいので忘れないように記録。 なんとなく、操作をもわかってきたので 目的のアプリを作成しながら少しづつ勉強していきます。 明日以降も、ちょっとした記録などを中心に気づいた点やわかった点をまとめられるといいなぁ。 以上、本日の記録。

Navigationとはなんなのか【AndroidStudio】

 昨日の続き、 (テンプレート)BasicActivityに含まれるナビゲーション(?)ってやつを見つけたので 何者なのかをザックリ調べてみました。 ナビゲーション ナビゲーションとは、ユーザーがアプリ内のさまざまなコンテンツ間を移動する操作を指します。Android Jetpack の Navigation コンポーネントは、単純なボタンクリックから、アプリバーやナビゲーション ドロワーなどの複雑なパターンまで 、さまざまなナビゲーションを実装するのに役立ちます。また、Navigation コンポーネントは、確立された 原則のセット に 従 うことにより、一貫性のある予測しやすいユーザー エクスペリエンスを保証します。 https://developer.android.com/guide/navigation?hl=ja 公式ドキュメントを読んだざっくりの理解。 ナビゲーションを使うことで、画面(Framgment)の遷移を管理することができる。 ナビゲーションは3つの要素で構成されていて、 ・Navigation Graph(ナビゲーショングラフ)  →ナビゲーションに関連した情報を集約したXMLファイル ・NavHostFragment(ナビゲーションホストフラグメント)  →ナビゲーションされた情報を表示するための元(フレームみたいなもの?) ・NavControlloer(ナビゲーションコントローラー)  →Navigationをコード上で使用するためのクラス   NavControllerを使って遷移時の引数の受け渡しなど制御が可能。 画面遷移部分を包括して管理、実装できる機能になっているみたいで Navigationを使用することで画面のデザインから、各画面への遷移を最小限のプログラムで実装し、イメージを作ることが非常に簡単になるのかなと感じた。  ※モックアップっていうのかな? また、画面遷移時のアニメーションについてもこのナビゲーションを使って実装ができるとのこと(詳しくはまた今度調べてみます。) いろいろ文献を見ると、Activityをたくさん作って、画面遷移をさせることはもちろん可能だけど 似たようなレイアウトや遷移時のアニメーション管理をしたい場合にはFragmentを用いて Navigationによる画面遷移(引数の受け渡し)を実装するの

BasicActivityについて調べてみた【AndroidStudio】

昨日の続き。 たまたま開いたBasicActivityのテンプレートに ActivityとFragmentが使われていたのでソースコードから勉強してみました。 Basic Activity < https://developer.android.com/studio/projects/templates?hl=ja#BasicActivity > activity_main.xml内に <include layout ="@layout/content_main" /> なんて記述で、別のXMLファイルを読み込んで content_main.xmlでパーツとしてFragmentの埋め込みをしている。 <fragment android :id ="@+id/nav_host_fragment" android :name ="androidx.navigation.fragment.NavHostFragment"    … …… app :navGraph ="@navigation/nav_graph" /> Fragment内の表示についてはnavigation(?)で制御している様子。 FirstFragment.java内でもnavigationによる画面遷移を実装している。 public void onClick (View view) { NavHostFragment. findNavController (FirstFragment. this ) .navigate(R.id. action_FirstFragment_to_SecondFragment ) ; } そこで、結局Navigationって何なのか?がわからないので 明日はNavigationについて調べてみようと思います。 以上、本日の記録。

ActivityとFragment。画面表示について勉強してみた。【AndroidStudio】

 昨日に引き続き、AndroidStudioの勉強をした。 昨日はEmptyActivityを使ってデバック実行ができたので 画面にいろいろ表示するべく参考になりそうなサイトを見て回っていましたが ところどころ出てくるActivityとFragmentの違いが全く判らなかったので デベロッパーサイトをさっそく読んでみた。 アクティビティの概要 Activity  クラスは Android アプリの重要なコンポーネントであり、アクティビティの開始方法と組み立て方法はプラットフォームのアプリケーション モデルを構成する際の基本的な要素です。 main()  メソッドで起動するアプリをプログラミングする際の枠組みとは異なり、Android システムでは、ライフサイクルのそれぞれの段階に対応するコールバック メソッドを呼び出すことにより、 Activity  インスタンス内のコードが開始されます。 < https://developer.android.com/guide/components/activities/intro-activities > フラグメント Fragment  は、アプリの UI の再利用可能な部分を表します。フラグメントはそれ自身のレイアウトを定義して管理します。また、それ自身のライフサイクルを持ち、入力イベントを処理できます。フラグメントは単独では機能せず、アクティビティまたは別のフラグメントによってホストされる必要があります。 フラグメントのビュー階層は、ホストのビュー階層の一部を構成するか、またはホストのビュー階層に接続されます。 < https://developer.android.com/guide/fragments > 公式を読んで、わかったことは 画面と思われるベースの部分がActivity、 Activity内のパーツとして表示を管理できるのがFragmentという感じでしょうか。 (HTMLのインラインフレームみたいな感じ?) まだまだ参考サイトを見ても用語が理解できない点が多いので これから少しづつ勉強していきたいと思います。 次は、たまたま開いたテンプレート「BasicActivity」が何やってるか意味わからなかったので解析していこうと思います。 やっぱり文章読むより、動かしてコード解析したほう

アンドロイドアプリ開発を始めてみました【AndroidStudio】

最近、知人と何気ない話の中からAndroidのアプリつくってみたくない?って話になった。 普段の仕事ではAndroidアプリとはかけ離れた古の技術で仕事してたので 純粋な興味もありせこせこと勉強を始めてみました。 ひとまず今日は、 AndroidStudioをインストールして空っぽのActivity(?)にて デバック実行ができるところまでは環境を作ったのでこれからいろいろ勉強していこうと思います。 もうすでに、先人の知恵とは偉大さを感じています。 エラーメッセージで検索すればすぐに解決策が出てくる。 素晴らしい。 以上、本日の記録。