1

後でデータセットのデータが取り込まれるタブを動的に作成したいと考えています。私のデータセットには、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 ごとに必要なタブは 1 つだけです。データセットを反復処理し、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);

私は自分自身を十分に明確にしたことを願っています。ご不明な点がございましたら、お気軽にお問い合わせください。できる限りの情報を提供します。

4

1 に答える 1

2

Linq を使用して個別のリストを取得し、元のデータソースを照会します

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);

}
于 2013-03-04T11:18:40.320 に答える