2017-02-15 5 views
0

Я пытаюсь создать кнопку динамически в xamarin C# в соответствии с количеством данных в базе данных. После объявления линейного макета весь код не работает.Как создать кнопку динамически в xamarin C# в соответствии с количеством данных в базе данных. В моем коде не выполняется линейное объявление макета

  try 
     {    var client = new System.Net.Http.HttpClient(); 
      var response = await client.GetAsync("http://"); 
      string jsonResponse = await response.Content.ReadAsStringAsync(); 
      JSONArray a = new JSONArray(jsonResponse); 
      LinearLayout linearLayout = FindViewById<LinearLayout>(Resource.Id.linearlayout1); 
      for (int i = 0; i < a.Length(); i++) 
      {   
       JSONObject json = a.GetJSONObject(i); 
       String id = json.GetString("id"); 
       String name = json.GetString("name"); 
       String status = json.GetString("status"); 
       // Toast.MakeText(this, id + name + status, ToastLength.Long).Show();  
       Button button = new Button(this); 
       button.Text = name; 
       button.SetBackgroundColor(Android.Graphics.Color.Black); 
       button.SetTextColor(Android.Graphics.Color.White); 
       LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent); 
       layoutParams.BottomMargin = 5; 
       button.LayoutParameters = layoutParams; 
       //Toast.MakeText(this, id, ToastLength.Long).Show(); 
       linearLayout.AddView(button); 
      } 
     } 
     catch (Exception e) 
     { 
      Toast.MakeText(this, "Excep", ToastLength.Long).Show(); 

     } 
+0

Что значит «весь код не работает»? – apineda

+0

Я напечатал значение имени и статуса id, как только я начал называть linearlayout его бросанием исключения. – user7379431

+0

Я не знаю, как создать кнопку динамически в линейном макете, пожалуйста, помогите мне в этом, ожидая ответа .. !! – user7379431

ответ

1

похоже, что вы не добавили его в своеобразное изображение как children.

+0

Я не знаю, как создать кнопку динамически в линейном макете, пожалуйста, помогите мне в этом, ожидая ответа .. !! – user7379431

+0

Просто добавьте эту строку до окончания цикла for. (Сразу после Toast.MakeText (это, id, ToastLength.Long) .Show(); }): 'linearLayout.AddView (кнопка);' – mindOfAi

+0

Попробуйте ответить @ apipineda. Не пробовал, но это выглядит хорошо для меня. – mindOfAi

0

Вот кое-что:

//You need a ViewGroup, you already have it: 
    LinearLayout linearLayout = FindViewById<LinearLayout>(Resource.Id.linearLayout1); 

    for (int i = 0; i < a.Length(); i++) 
    { 
     JSONObject json = a.GetJSONObject(i); 
     String id = json.GetString("id"); 
     String name = json.GetString("name"); 
     String status = json.GetString("status"); 

     //You create the instance of your view in this case your Button 
     Button button = new Button(this); 
     button.Text = name; 
     button.SetBackgroundColor(Android.Graphics.Color.Black); 
     button.SetTextColor(Android.Graphics.Color.White); 

     //define the button layout 
     LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MatchParent, ViewGroup.LayoutParams.WrapContent); 

     //in case you want to modify other properties of the LayoutParams you use the object 
     layoutParams.BottomMargin = 5; 

     //Assign the layoutParams to the Button. 
     button.LayoutParameters = layoutParams; 

     //If you want to do something with the buttons you create you add the handle here 
     //button.Click += (sender, e) => DoSomething(id); 

     //Add the button as a child of your ViewGroup 
     linearLayout.AddView(button); 
    } 

И вы сделали. Это должно послужить вам руководством.

+0

По-прежнему я получаю ту же ошибку. На самом деле цикл for работает в try {}. Результат для кода генерирует исключение (catch {}). – user7379431

+0

@ user7379431 Но вы не указали ошибку, которую вы получаете, без этого вам будет сложно помочь. – apineda

+0

System.NotlmplementedException: метод или операция не реализованы. в VoltrentNetworks.login.FindViewByld [T] (System.Object myButton1) [0x00001] в C: \ xamarin \ VoltLogin \ VoltLogin WoltLogin.Droid \ login.cs: 146 в VoltrentNetworks.login + d__13.MoyeNext [0x001 c7] в C: \ xamarin \ VoltLogin \ VoltLogin WoltLogin.Droid \ login.cs: 64 – user7379431

 Смежные вопросы

  • Нет связанных вопросов^_^