[解決済み] ArrayAdapterのgetViewTypeCountメソッドとgetItemViewTypeメソッド
2022-04-25 04:21:18
質問
の使い方を誰か分かりやすく説明してください。
getViewTypeCount()
と
getItemViewType()
のメソッドは
ArrayAdapter
?
解決方法は?
これらは、異なる タイプ を表示します。たとえば、連絡先アプリケーションでは、偶数行の左側に写真を表示し、奇数行の右側に写真を表示することができます。そのような場合は、次のようにします。
@Override
public int getViewTypeCount() {
return 2;
}
@Override
public int getItemViewType(int position) {
return position % 2;
}
フレームワークは、ビュータイプを使用して
を経由して、どのビューを渡すか
convertView
での
getView
メソッド
. つまり、上記の例では、偶数列は左側に絵があるリサイクルビューのみを取得して再利用し、奇数列は右側に絵があるもののみを取得することになります。
リスト内のすべての行が同じレイアウトであれば、ビュータイプを気にする必要はありません。実際 BaseAdapter.java は、すべてのアダプタに対してデフォルトの動作を提供します。
public int getItemViewType(int position) {
return 0;
}
public int getViewTypeCount() {
return 1;
}
これは確かに、すべての行に対して同じビュータイプを提供します。
編集 - で大まかな流れを説明します。
-
データを
AdapterView
をアダプタで使用します。 -
は
AdapterView
は、ユーザーから見える項目を表示しようとします。 -
フレームワークが呼び出す
getItemViewType
行に対してn
の場合は、これから表示する行を指定します。 -
フレームワークは、リサイクルされたビュープールをチェックし、行の
n
のタイプです。ビューがまだリサイクルされていないため、見つかりませんでした。 -
getView
は行に対して呼び出されますn
. -
あなたが電話する
getItemViewType
行に対してn
を使用して、どのような種類のビューを使用すべきかを決定します。 - if/switchステートメントを使用して、どのビュータイプが必要かに応じて異なるxmlファイルを膨らませるのです。
- ビューに情報を入力します。
-
を終了してビューを返します。
getView
そして、あなたの行のビューがユーザーに表示されます。
さて、画面外へのスクロールによってビューがリサイクルされると、フレームワークによって管理されているリサイクルビュープールに入ります。これらは基本的にビューの種類によって整理されているので、正しい種類のビューが
convertView
パラメータで指定します。
getView
メソッドを使用します。
-
フレームワークは再び
getItemViewType
を表示したい行のために使用します。 - 今回は、リサイクルプール内に適切なタイプのビューがあります。
-
リサイクルされたビューを
convertView
パラメータをgetView
メソッドを使用します。 - リサイクルされたビューを新しい情報で満たし、それを返します。
関連
-
Android端末にADBが接続できない!を解決。理由: デバイスが認証されていない!
-
[解決済み] Androidのgravityとlayout_gravityの違いは何ですか?
-
[解決済み] TextViewでテキストを水平・垂直方向にセンタリングするには?
-
[解決済み] TextViewのtextStyle(太字、斜体など)を設定する方法
-
Windowsのadbシェルでデータディレクトリにアクセスするとパーミッションが拒否される
-
[解決済み] android.os.NetworkOnMainThreadException' を修正するにはどうすればよいですか?
-
[解決済み] Androidのソフトキーボードをプログラムで閉じる/隠すにはどうすればよいですか?
-
[解決済み] Eclipseにプロジェクトをインポートした後に「Must Override a Superclass Method」エラーが発生する。
-
[解決済み] Androidで現在の時刻と日付を取得する方法
-
[解決済み】「px」、「dip」、「dp」、「sp」の違いは?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
Androidのadbデバイスがオフラインであることが判明
-
aapt2エラー:ログを確認する(具体的な原因の探り方)
-
Gradle の同期に失敗しました。com.android.tools.build:gradle が見つかりませんでした。
-
プログラム "git.exe "を実行できない場合の正しい解決方法です。CreateProcessエラー=2
-
最新のandroidプロジェクトディレクトリにあるarmeabi-v7aとarmeabiの具体的な意味とその違いを教えてください。
-
android block certificate validation CertPathValidatorException: 認証パスのトラストアンカーが見つかりません
-
ライブラリをモジュールとしてインポートする際にエラーが発生しました。Error:A problem occurred configuring project ':library'.
-
Androidのカラーグラデーション実装のまとめ
-
超シンプルなアンドロイドのタイムディレイ機能
-
Android Studioのgitの使用とgitの設定パス