次の複数のインスタンスを含むJSON文字列があります
- 名前
- メッセージ
- タイムスタンプ
- プロフィール写真のURL
各リストに上記が含まれるListViewを作成したいと思います。カスタムアダプタを作成するために、この特定のケースで拡張する必要がある優れたアダプタはどれですか?
次の複数のインスタンスを含むJSON文字列があります
各リストに上記が含まれるListViewを作成したいと思います。カスタムアダプタを作成するために、この特定のケースで拡張する必要がある優れたアダプタはどれですか?
私の仮定では、どちらの場合も検討する前に、JSON文字列をオブジェクトモデルに解析したと仮定しています...このクラスをプロファイルと呼びましょう。
戦略1
ArrayAdapterは、複数のフィールドを希望どおりに連結するオーバーライドされたgetView(..)メソッドで十分です。
ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v;
// use the ViewHolder pattern here to get a reference to v, then populate
// its individual fields however you wish... v may be a composite view in this case
}
}
潜在的に大きなリストにはViewHolderパターンを強くお勧めします: https ://web.archive.org/web/20110819152518/http://www.screaming-penguin.com/node/7767
それは大きな違いを生みます。
戦略2
または、代表クラスのtoString()メソッドがすでに表示に使用できる形式になっている場合は、getView()をオーバーライドせずにArrayAdapterを使用できます。
この戦略はより単純ですが、表示するためにすべてを1つの文字列に粉砕する必要があります。
ArrayAdapter<Profile> profileAdapter = new ArrayAdapter<Profile>(context, resource, profiles)