2015-04-23 111 views
0

這是我CAM做現在如何分割清單均勻/

items = new List<TableItem>(); 
      items.Add (new TableItem(){ name = "Apple" }); 
      items.Add (new TableItem(){ name = "Pear" }); 
      items.Add (new TableItem(){ name = "Shoe" }); 
      items.Add (new TableItem(){ name = "Cake" }); 
      items.Add (new TableItem(){ name = "Vodka" }); 
      items.Add (new TableItem(){ name = "Alize" }); 
      items.Add (new TableItem(){ name = "Alizeee" }); 
      ........ 
      ........ 
      ........ 

這是我在做什麼,現在,有這樣一個項目,因爲它的奇數爲計數,列表中缺少會從API填充所以有可能是添加任何數量的項目到列表

  int number = items.Count; 
      int number2 = number/2; 

      List<TableItem> firstList = items.GetRange(0, number2); 
      List<TableItem> secondList = items.GetRange(number2, number2); 


      listView1.Adapter = new HomeScreenAdapter(this, firstList); 
      listView2.Adapter = new HomeScreenAdapter (this, secondList); 
+0

當你說你想平均分割列表時,你是什麼意思?列表中的給定數量的項目有多少個子列表? – bit

回答

2

加1到你的第二個列表的長度如果計數爲奇數:

 int number = items.Count; 
     int number2 = number/2; 

     List<TableItem> firstList = items.GetRange(0, number2); 
     List<TableItem> secondList = items.GetRange(number2, number % 2 == 0? number2 : number2 + 1); 


     listView1.Adapter = new HomeScreenAdapter(this, firstList); 
     listView2.Adapter = new HomeScreenAdapter (this, secondList); 
0

如果你期望奇列表,然後 你應該使用Math.CeilMath.Floor根據您的需要選擇中間的數字
所以如果你的列表中包含5個元素則

number = Math.Ceil(5/2) // will return 3; 
number = Math.Floor(5/2) // will return 2 
+2

'Math.Ceil(5)'和'Math.Floor(5)'將返回5 ... –

+0

@NilsO - 謝謝我糾正了我的答案 –

+0

我測試了它,因爲我不確定它是否能夠正確計算甚至編譯(上面的文本沒有)。當你使用'Math.Ceiling(5/2.0)'或'Math.Floor(5/2.0)' –

0

你可以使用LINQ:

​​