• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ArrayListのソートについて)

ArrayListのソートについて

このQ&Aのポイント
  • プログラム上でListViewのカラムをクリックするとソートされる。リストはソートされるのに中身(ArrayList)がソートされていないため、ソート後のアイテムをクリックしても違う値しか出てこない。
  • ArrayListのソートが必要だが、比較ができないエラーが出てソートできない。
  • ListViewのカラムソートと連動してArrayListのソートができるようにするにはどうすればいいか。

質問者が選んだベストアンサー

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.2

subject + addressが一意で無い場合 ArrayListのIndexを ListViewItemのTagプロパティに登録してみましょう // ListViewを設定する int i = 0; foreach (Mail mail in list) {   ListViewItem item = new ListViewItem(mail.subject);   item.SubItems.Add(mail.address);   // この2行を追加   item.tag = i;   i++;   listView1.Items.Add(item); } といった具合にします 選択されたアイテムの選定には ListViewItem item = listView1.SelectedItem[0]; Mail mail = list[(int)item.Tag]; といった具合で選択できると思います

その他の回答 (1)

  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.1

Clickした際にcollectionMailから探すロジックを提示してみましょう ListViewItem item; if (listView1.SelectedItems.Count > 0 ) {   item = listView1.SelectedItems[0];   ArrayList list = (listView1.Columns[1].Text == "差出人") ?     collectionMail[RECEIVE] : collectionMail[DELETE];   boolean bflag = false;   foreach( Mail mail in list )   {     if ( mail.subject == item.Text && mail.address == item.SubItems[1].Text )     {       bflag = true;       MessageBox.Show( mail.subject + "\n" + mail.body );       break;     }   }   if ( !bflag )   {     MessageBox.Show("アイテムが見つかりません");   } } といった具合で探せると思いますが ...

関連するQ&A