Androidリストビューに表示する必要があるWSのデータがあります。 データはタイプが異なる可能性があるので、ListViewアイテムのレイアウトを動的に作成する必要があります。どうすればいいですか?私はLayoutInflaterを使用しなければならないと思うが、既存のレイアウトで常にそれを使用し、レイアウトをゼロから作成したことはない。どうすればいいですか?Androidでプログラムでリストビュー項目を作成する
答えて
あなたはちょうどそれがアダプタを使用してすべてについて詳しく説明し、このリンクをチェックすること
用のアダプタを作成する必要があります。
http://www.vogella.de/articles/AndroidListView/article.html
//はR.layout.rowlayoutは、ユーザーが定義可能なあなたの各行 のレイアウトであるだけで、このコードをチェック
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
private final Context context;
private final String[] values;
public MySimpleArrayAdapter(Context context, String[] values) {
super(context, R.layout.rowlayout, values);
this.context = context;
this.values = values;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
TextView textView = (TextView) rowView.findViewById(R.id.label);
ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
textView.setText(values[position]);
// Change the icon for Windows and iPhone
String s = values[position];
if (s.startsWith("iPhone")) {
imageView.setImageResource(R.drawable.no);
} else {
imageView.setImageResource(R.drawable.ok);
}
return rowView;
}
}
与えられたURLに
を編集しましたあなたのimageviews、textviews
異なるデータ型を使用していると言われているように、あなたはdifferenデータ型ごとにt個のレイアウトがあります。リストビュー項目を動的に作成する必要はありません。必要ならば、XMLからそれらを膨らませることができます。
カスタムリストアダプター(vipellaが提供するvogellaへのリンクを参照)を作成し、getView()
,およびgetViewTypeCount()
のメソッドを上書きします。
getView()
では、ビューをプログラムで作成するか、XMLから展開します。展開するレイアウトを決定するには、getItemViewType(position)
を呼び出し、それが返す値を確認して、その値のためにどのレイアウトを展開するかを選択します。 XMLレイアウトを作成する方法の詳細については、this page in the dev guide on XML layoutsを参照してください。
次に、this answerを見て、これをアダプタに実装してください。コメントも必ずお読みください。例えば、getItemViewType()
のようなものをオーバーライドします。
public int getItemViewType(int position) {
if(getItem(position) instanceOf ItemA) {
return 0;
} else {
return 1;
}
}
このアプローチは、あなたのリストビューは、ビューをリサイクルして(詳細は、再び提供リンクvipinを参照してください)ViewHolderパターンを使用することができます。
- 1. Android:プログラムでクリックされたリストビュー項目を選択状態に設定する
- 2. プログラムでリストビューの項目を強調表示する方法は?
- 3. Visual Studio:プロジェクトディレクトリにプロジェクト項目をプログラムで作成する
- 4. ManyToManyFieldに複数の項目をプログラムで作成する方法
- 5. Android ListViewリストビューなしで項目を追加する
- 6. Androidリストビュー固定高さ項目
- 7. リストビューで項目の動的データを生成する方法
- 8. リストビュー内の項目の動的生成
- 9. リストビュー項目と.CSV
- 10. リストビューは、各項目
- 11. 作成時にリストビューの最初の項目をハイライト表示
- 12. Androidでフィード/リスト項目のxmlテンプレートを作成しますか?
- 13. Android - リストビュー項目を選択できない
- 14. リストビュー項目をダブルクリックすると選択項目を取得
- 15. ダブルクリックでリストビュー項目を開くvb.net
- 16. Androidサービスの結果リストビューの項目をハングする
- 17. カスタムリストビュー項目をプログラムで変更する
- 18. リストビュー項目でスクロールダウンすると項目保存値が消えます
- 19. jsTreeコンテキストメニューでカスタム項目を作成
- 20. Androidでボタンをプログラムで作成する
- 21. リストビュー項目にonClickListenerを追加する
- 22. リストビュー項目のリンクとテキスト
- 23. リストビューの各項目のオプション
- 24. Androidがリストビューの項目に色を設定しました
- 25. クラスで3つのリストビューの項目を保存する方法
- 26. リストビューで項目を選択する方法
- 27. リストビューで選択した項目を確認する方法
- 28. セレクタおよびisEnabled()でリストビュー項目を無効にする
- 29. 動的に項目をCのリストビューでロードするC#
- 30. スピナー - ポップアップ/リストビューの項目が異なる
vogellaサイトには素晴らしいチュートリアルがありますが、ビューが追加された場所をゼロから作成したレイアウトのサンプルは見つかりません。私が見るすべての例では、既存のxmlレイアウトを使用しています。私はこれを避けたかったのです。 – Cris
ok thenなぜあなたは新しいオブジェクトでListView list = new ListView(context)としてそれらを作成しようとしないのですか? – vipin
その解決策はあなたのために働いたかどうか??? – vipin