2016-12-03 2 views
1

Я понимаю, что это очень простой вопрос, но я не могу его преодолеть с помощью ограниченных возможностей приложения C#/Android.Заполнение текстового поля после выбора элемента подбора (C#, Xamarin, Android)

EDIT: В итоге у меня есть метод, который вызывается, когда выбран элемент прядильника. В этом методе я получаю кучу текста через вызов базы данных. Я хотел бы иметь доступ к этому списку текста в своем OnCreate, поэтому я могу использовать его для заполнения текстовых просмотров (среди прочего)

В моем коде у меня есть пользователь, который выбирает значение из счетчика. Когда они выбирают его, я запускаю немного кода, который использует выбор вращателя для запроса SQL базы данных и раскол в массив строк называется DataList показано ниже:

protected override void OnCreate(Bundle bundle) 
    { 
     //Not showing you lots of stuff, because its irrelevant 
     Spinner RiderSelectSpinner = FindViewById<Spinner>(Resource.Id.RiderSelectSpinner); 
     TextView FCompStock = FindViewById<TextView>(Resource.Id.FCompStock); 

     RiderSelectSpinner.ItemSelected += rider_Selected; 
    } 

     public void rider_Selected(object sender, AdapterView.ItemSelectedEventArgs e) { 
     //Not showing you many database things because its not relevant 

     if (!string.IsNullOrEmpty(dataString)) 
     { 
      string[] dataList = dataString.Split(','); 
     } 
     } 

Вот кикер, и мой вопрос. Я хочу отображать определенные значения моего списка данных как текстовое представление, определенное в OnCreate. Мои текстовые представления (конечно) не имеют контекста здесь, в моем методе rider_Selected. По сути, я хотел поставить следующий раз после того, как я определяю DataList выше:

FCompStock.Text = dataList[0]; 

Я попытался сформулировать решения по определению DataList в основной деятельности, тем самым его доступным OnCreate и мой метод, но я потребуется событие, чтобы вызвать заполнение текстового поля. Я также попробовал просто сформулировать метод, позволяющий мне передать dataList обратно туда, где его вызвал, но и не кубики.

Может ли кто-нибудь посоветовать мне, как передать данные в ответ на исходный вызов или, возможно, создать событие для заполнения текстового представления?

+0

Привет, я не уверен, что это то, что вы хотите. Но вы можете получить доступ к TextView или любому другому элементу в Activity by Id. Например: TextView t = FindViewById (Resource.Id.textView1); а затем измените значение: t.Text = «Новое значение». Это то, что вы ищете? – xszaboj

+0

Извините, я не очень хорошо себя объяснил. Я хочу присвоить свой текст какой-нибудь текст, но текст сгенерирован другим способом. Этот другой метод является spinner.itemselected. Как-то мне нужно, чтобы мой spinner.itemselected метод возвращал этот текст. –

+0

и почему вы не можете получить доступ к textView в этом методе и установить его? Является ли этот метод каким-то другим объектом, кроме первого? – xszaboj

ответ

0

Вы можете объявить свой TextView вне метода onCreate глобальным.

TextView FCompStock; 

protected override void OnCreate(Bundle bundle) 
{ 
    //Not showing you lots of stuff, because its irrelevant 
    Spinner RiderSelectSpinner = FindViewById<Spinner>(Resource.Id.RiderSelectSpinner); 
    FCompStock = FindViewById<TextView>(Resource.Id.FCompStock); 

    RiderSelectSpinner.ItemSelected += rider_Selected; 
} 

public void rider_Selected(object sender, AdapterView.ItemSelectedEventArgs e) { 
    //Not showing you many database things because its not relevant 

    if (!string.IsNullOrEmpty(dataString)) 
    { 
     string[] dataList = dataString.Split(','); 
     FCompStock.Text = "Whatever you want"; 
    } 
} 
+0

Спасибо вам большое! Знаете, я пробовал это, но я использовал весь оператор, назначая идентификатор ресурса, который не работал. Мне не приходило в голову разделить их. –

+0

Хорошо. Перед использованием findViewById вам необходимо установить свой контент. – HeisenBerg