読みかけの技術ノート

やったこと、困ったこと、解決したこと、書いていきます。

Xamarin.AndroidでListViewを実装する

実装例

独自アダプターを作ってみました
https://github.com/yomika4-14/ListViewSample

簡単な説明

MainActivity.cs

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

  • メモ一つひとつのレイアウト

実際の画面

f:id:yomika414:20160507190235j:plain