Xamarin.AndroidでListViewを実装する
実装例
独自アダプターを作ってみました
https://github.com/yomika4-14/ListViewSample
簡単な説明
MainActivity.cs
- メイン画面の動作を実装
- ListViewクラスのAdapterに、独自アダプターを設定する
- SDK標準のAdapterも利用できる→参考:Part 3 - Customizing a ListView's Appearance - Xamarin
ListView memoList; MemoListAdapter memoListAdapter; List<Memo> memos; // 省略 btnDeleteAllMemo.Click += (sender, e) => { memos = new List<Memo>(); memoListAdapter = new MemoListAdapter(this, memos); memoList.Adapter = memoListAdapter; };
Memo.cs
- ListViewに表示させるメモのクラス
MemoListViewAdapter.cs
- 独自アダプター
- BaseAdapterクラスを継承する
- MemoクラスとListViewクラスの橋渡し役
- GetViewメソッド内でリスト1項目分を設定している
public override View GetView(int position, View convertView, ViewGroup parent) { Memo memo = memoList[position]; // Viewが再利用されていない場合は新しく作成 var view = convertView; if (view == null) view = context.LayoutInflater.Inflate(Resource.Layout.Memo, null); // 表示内容の設定 TextView tvTitle = view.FindViewById<TextView>(Resource.Id.title_text); TextView tvContent = view.FindViewById<TextView>(Resource.Id.content_text); TextView tvMemoDate = view.FindViewById<TextView>(Resource.Id.date_text); tvTitle.Text = memo.title; tvContent.Text = memo.content; tvMemoDate.Text = memo.memoDate.ToString("yyyy/MM/dd HH:mm:ss"); return view; }
Main.axml
- メイン画面のレイアウト
Memo.axml
- メモ一つひとつのレイアウト
実際の画面