在微调项选择后填充文本视图(C#、Xamarin、Android)

Populating a textview after spinner item selection (C#, Xamarin, Android)

我知道这是一个非常基本的问题,但我似乎无法用我有限的 C#/Android 应用程序功能来克服它。

编辑:总而言之,我有一个在select编辑微调项时调用的方法。在那种方法中,我通过数据库调用获得了一堆文本。我希望能够在我的 OnCreate 中访问该文本列表,以便我可以使用它来填充文本视图(以及其他内容)

在我的代码中,我有一个用户 select 来自微调器的值。当他们 select 它时,我启动了一些代码,使用微调器 selection 来查询 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(',');
        }
        }

这是关键,也是我的问题。我想将我的 dataList 的某些值显示为在 OnCreate 中定义的文本视图。我的文本视图(当然)在我的 rider_Selected 方法中没有上下文。本质上,我想在上面定义 dataList 之后添加以下内容:

FCompStock.Text = dataList[0];

我试图通过在主 activity 中定义 dataList 来制定解决方案,从而使其可用于 onCreate 和我的方法,但我需要一个事件来触发填充文本视图。我还尝试简单地制定允许我将 dataList 传回调用它的地方的方法,但那里也没有骰子。

有人可以指导我如何将 dataList 传回原始调用,或者可能如何创建一个事件来填充文本视图吗?

您可以在 onCreate 方法之外将您的 TextView 声明为全局。

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";
    }
}