动态选项卡:使用数据集添加它们并检查它们是否存在

时间:2013-03-04 10:36:05

标签: c# android android-tabs xamarin.android

我想动态创建一个标签,后来填充了数据集中的数据。 在我的数据集中,我有一个名为TabId的字段。它用作标题和id,稍后(在标签视图上)用于迭代它提取的数据集。由于将来可能会有更多选项卡,并且客户希望解决方案需要尽可能少的更新,我需要动态创建它们。但问题是包含我的标签数据的数据集包含在迭代表格时多次重复的tabId。

示例:

Rec 1 TabId = first
Rec 2 TabId = first
Rec 3 TabId = first
Rec 4 TabId = first
Rec 5 TabId = first
Rec 6 TabId = first
Rec 7 TabId = first
Rec 8 TabId = Second
Rec 9 TabId = Second
Rec 10 TabId = Second
Rec 11 TabId = Third
Rec 12 TabId = Third
Rec 13 TabId = Third

依旧......

基本上我知道我需要使用TabId创建一个foreach循环,但每个不同的\唯一ID只需要一个标签。我如何遍历我的数据集并处理我的TabId的额外重复项,以便我以后可以使用它来动态创建我的标签。

我当前的(静态)代码:

intent = new Intent(this, typeof(Tab1));
intent.PutExtra("FormId", FormId);
intent.PutExtra("TabNum", TabId);
intent.PutExtra("EventNo", EventNo);
intent.PutExtra("Ticket", Ticket);
intent.PutExtra("DataSet", xml);
intent.AddFlags(ActivityFlags.NewTask);

// Initialize a TabSpec for each tab and add it to the TabHost  
spec = TabHost.NewTabSpec(TabId); // unique per tab
spec.SetIndicator(TabId); // unique per tab
spec.SetContent(intent);
TabHost.AddTab(spec);

我希望自己足够清楚。如果出现任何问题,请不要犹豫。我将提供尽可能多的信息。

1 个答案:

答案 0 :(得分:2)

使用Linq获取不同的List并查询原始数据源

var tabIDs = (from DataRow dr in dataTable.Rows
         select (Int32)dr["TabID"]).Distinct();

从数据集中:

var tabIDs = (from DataRow dr in dataSet.Tables["tableName"].Rows
         select (Int32)dr["TabID"]).Distinct();

然后遍历您的TabID

foreach(Int32 tabID in tabIDs){

    spec = TabHost.NewTabSpec(tabID ); // unique per tab
    spec.SetIndicator(tabID ); // unique per tab
    spec.SetContent(intent);
    TabHost.AddTab(spec);

}
相关问题