2017-07-17 74 views
1

當我單擊ListView(OnlistItemClick)時,它會多次執行該事件。ListView(OnlistItemClick)多次執行事件

當你再次選擇(微調)它表現更好。

我的問題

void OnlistItemClick(object sender, AdapterView.ItemClickEventArgs e) 
{ 
    var listprojall = sender as ListView; 
    var t = tableItems[e.Position]; 
    Globals.GlobalAskId = t.SubHeading1; 
    StartActivity(typeof(Teansrproj)); 
} 

全碼:

List<TableItem> tableItems; 
    protected override void OnCreate(Bundle bundle) 
    { 
     base.OnCreate(bundle); 

     // Set our view from the "main" layout resource 
     SetContentView(Resource.Layout.Projlist); 

     mToolbar = FindViewById<Android.Support.V7.Widget.Toolbar>(Resource.Id.toolbar); 
     SetSupportActionBar(mToolbar); 
     SupportActionBar.Title = "قائمة طلبات المشاريع"; 

     Selling.WebServiceDB ws = new Selling.WebServiceDB(); 
     ws.MajorAListCompleted += Ws_MajorAListCompleted; 
     ws.MajorAListAsync("المرحلة الجامعية"); 
    } 

    private void Ws_MajorAListCompleted(object sender, Selling.MajorAListCompletedEventArgs e) 
    { 
     if (e.Result.ToString().Equals("0")) 
     { 

     } 
     else 
     { 
      Spinner spinmajer = FindViewById<Spinner>(Resource.Id.spinmajer); 
      List<String> datalist = new List<String>(); 
      foreach (var item in e.Result) 
      { 
       datalist.Add(item.MajorA); 
      } 
      var ArrayAdpter1 = new ArrayAdapter<String>(
      this, Android.Resource.Layout.SimpleSpinnerItem, datalist); 
      spinmajer.Adapter = ArrayAdpter1; 
      //spinmajer.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinmater3_ItemSelected); 
      spinmajer.ItemSelected += spinmater3_ItemSelected ; 
     } 
    } 

    private void spinmater3_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) 
    { 
     Spinner spinmajer = (Spinner)sender; 
     string input2 = Convert.ToString(spinmajer.GetItemAtPosition(e.Position)); 

     Selling.WebServiceDB ws2 = new Selling.WebServiceDB(); 
     ws2.MaterDataLvlCompleted += Ws2_MaterDataLvlCompleted; 
     ws2.MaterDataLvlAsync("المرحلة الجامعية", input2); 
    } 

    private void Ws2_MaterDataLvlCompleted(object sender, Selling.MaterDataLvlCompletedEventArgs e) 
    { 
     if (e.Result.ToString().Equals("0")) 
     { 

     } 
     else 
     { 
      Spinner spinmater3 = FindViewById<Spinner>(Resource.Id.spinmater3); 
      List<String> datalist = new List<String>(); 
      foreach (var item in e.Result) 
      { 
       datalist.Add(item.MaterNameA); 
      } 
      var ArrayAdpter1 = new ArrayAdapter<String>(
      this, Android.Resource.Layout.SimpleSpinnerItem, datalist); 
      spinmater3.Adapter = ArrayAdpter1; 
      //spinmater3.ItemSelected += new EventHandler<AdapterView.ItemSelectedEventArgs>(spinner1_ItemSelected); 
      spinmater3.ItemSelected += spinner1_ItemSelected; 
     } 
    } 

    private void spinner1_ItemSelected(object sender, AdapterView.ItemSelectedEventArgs e) 
    { 
     Spinner spinmajer = (Spinner)sender; 
     string sub = Convert.ToString(spinmajer.GetItemAtPosition(e.Position)); 

     Selling.WebServiceDB ws3 = new Selling.WebServiceDB(); 
     ws3.ProjectListCompleted += Ws3_ProjectListCompleted; 
     ws3.ProjectListAsync(sub); 
    } 

    private void Ws3_ProjectListCompleted(object sender, Selling.ProjectListCompletedEventArgs e) 
    { 
     ListView listprojall = FindViewById<ListView>(Resource.Id.listprojall); 
     string msg = ""; 

     if (e.Result.ToString().Equals("0")) 
     { 
      var callDialog = new AlertDialog.Builder(this); 
      callDialog.SetTitle("Notify"); 
      callDialog.SetMessage(msg); 
      callDialog.SetNeutralButton("The Customer Code is not correct", delegate { }); 
      callDialog.Show(); 
     } 
     else 
     { 
      // full class 
      tableItems = new List<TableItem>(); 
      foreach (var item in e.Result) 
      { 
       tableItems.Add(new TableItem(item.ProjName, item.Projansr, Convert.ToString(item.Projid))); 
      } 
      listprojall.Adapter = new HomeScreenAdapter(this, tableItems); 
      //listprojall.ItemClick += OnlistItemClick; 
      listprojall.ItemClick += new EventHandler<AdapterView.ItemClickEventArgs>(OnlistItemClick); 
     } 
    } 

    void OnlistItemClick(object sender, AdapterView.ItemClickEventArgs e) 
    { 
     var listprojall = sender as ListView; 
     var t = tableItems[e.Position]; 
     Globals.GlobalAskId = t.SubHeading1; 
     StartActivity(typeof(Teansrproj)); 
    } 

    // adpater manage 
    public class HomeScreenAdapter : BaseAdapter<TableItem> 
    { 
     List<TableItem> items; 
     Activity context; 
     public HomeScreenAdapter(Activity context, List<TableItem> items) 
      : base() 
     { 
      this.context = context; 
      this.items = items; 
     } 
     public override long GetItemId(int position) 
     { 
      return position; 
     } 
     public override TableItem this[int position] 
     { 
      get { return items[position]; } 
     } 
     public override int Count 
     { 
      get { return items.Count; } 
     } 
     public override View GetView(int position, View convertView, ViewGroup parent) 
     { 
      var item = items[position]; 
      View view = convertView; 
      if (view == null) // no view to re-use, create new 
       view = context.LayoutInflater.Inflate(Resource.Layout.Ticket_News, null); 
      view.FindViewById<TextView>(Resource.Id.Text1).Text = item.Heading; 
      view.FindViewById<TextView>(Resource.Id.Text2).Text = item.SubHeading; 
      view.FindViewById<TextView>(Resource.Id.Text3).Text = item.SubHeading1; 

      return view; 
     } 
    } 

    public class TableItem 
    { 
     public string Heading; 
     public string SubHeading; 
     public string SubHeading1; 

     public TableItem(string Heading, string SubHeading, string SubHeading1) 
     { 
      this.Heading = Heading; 
      this.SubHeading = SubHeading; 
      this.SubHeading1 = SubHeading1; 
     } 
    } 
} 

}

+0

下一次請花更多精力來正確格式化代碼。 –

回答

0

你不需要

OnlistItemClick 

多次綁定。

可以在OnCreate中移動

ListView listprojall = FindViewById<ListView>(Resource.Id.listprojall); 
listprojall.ItemClick += new EventHandler<AdapterView.ItemClickEventArgs>(OnlistItemClick); 

所以只分配的。

+0

@ Eng.Ahmed謝謝你,但從這裏我不能說你是否將代碼移到onCreate。你可以編輯你的問題來源,所以我可以看到完整的圖片? – Taier

+0

謝謝你現在好了 –

+0

@ Eng.Ahmed偉大的:) – Taier