getView
リストビューで実行する場合は、アダプターのメソッドの各位置を明示することで実行できます。次に例を示します。
public View getView(int position, View convertView, ViewGroup parent) {
switch (position) {
case 0:
// do image switch option
// convertView = layout 0
break;
case 3:
// do button whatever option
// convertView = layout 3
break;
case 5:
// do button whatever option
// convertView = layout 5
break;
default:
// do normal option
// convertView = layout 1
break;
}
return convertView;
}
getView
ビューを返す多くのAndroidアダプターのメソッドです。に接続するとlistView
、各行のビューを返すメソッドとして認識されます。表示されるリストビューの各行は、このメソッドの1つの実行されたインスタンスの積です。これは呼び出さないでください。リストビューの行を表示する必要があるとき、行の位置が画面外に移動して戻ってくるとき、またはlistViewが更新されるとき、通常はリストビューの行を「作成」する必要があるときはいつでも自動的に呼び出されます。 "。必要な特定の外観に合わせてカスタマイズできるように、オーバーライドすることができます。
convertView
ビューでもあります。これは、 view-recyclingと呼ばれるlistviewアダプターで実行される同時メカニズムの製品です。ゲームのショッピングメニューに1000行を表示する必要があるリストビューがあるとします。getView
従来のアプローチでは、活気のあるxmlを作成するためにinflateコマンドを作成し、コンポーネントを編集してアイテムの違いを表示するだけです。つまり、これは1000回の膨張であり(膨張はコストのかかる手順です)、それに加えて、メモリ内にある必要があり、ガベージコレクターを詰まらせているだけです。さらに、変更を表示するために何かを更新する必要がある場合はどうなりますか?出て行け!現在、クアッドコア電話がありますが、もっと良い方法があります。
正しく実行されたリストビューは、実際には一度に1000ビューを作成するのではなく、一度に画面に表示されるのは7または8ビューのみです。リストビューの行ビューが電話の画面の境界を超えてスクロールされた場合、それはまだ破棄されていません。この同時メカニズムが実行され、このビューはのタイトルで保存および保持され、次の呼び出しconvertView
のパラメーターとして渡されます。getView
本質的に次のgetView呼び出しの次の行のように見えるビューがあり、おそらくテキストビューのテキストのみが変更されているなどの理由で、これを(再)使用しないことはひどい無駄ですが、とにかく別の高価なインフレを行います。次に、未使用のconvertViewは、GCへの2回目のチャンスが無視されたことを認識し、通常どおりに機能します。
上記のコードはconvertView
、率直に言って質問されていないため、を使用していませんが、使用するのは非常に簡単です。
public View getView(int position, View convertView, ViewGroup parent) {
if (convertView == null) {
// inflation step
// convertView = inflation
}
// rest of code involving components of inflated view
return convertView;
}
最初に、そこに何もないかどうかを確認します。これは、リストビューが最初に起動されたときであり、デッキに捨てられる機会がなかったときです。そして、その時だけあなたのインフレをしなさい。次回、getViewは使用済みのビューで口いっぱいになり、プラグインします(返された場合)。これは、リストビューのパフォーマンスにとって最も有益なアクションであり、すぐに実行できます。
しかし、あなたはこれを知っている必要があります、このサイトでandroidとタグ付けされた質問の約半分はこれだけにあります、あなたが上にスクロールしている場合は真下、スクロールしている場合は真上にあるように、convertViewがあなたが望む位置に落ちるという保証はありません下。何がどの位置にあるかを明確にしていることを確認してください。そうすれば大丈夫です。これと他のリストビューのノウハウの詳細については、これを見てください:http ://www.youtube.com/watch?v=wDBM6wVEO70 。