Android版Mono:从单击的listview项目向其初始化的警报对话框发送数据

Android版Mono:从单击的listview项目向其初始化的警报对话框发送数据,android,android-listview,xamarin.android,android-alertdialog,pass-data,Android,Android Listview,Xamarin.android,Android Alertdialog,Pass Data,单击: lstText.ItemClick += (sender, args) => { Logon(GetString(Resource.String.LogonMessage), sUUID, sUserId, sUserPIN); }; private void Logon(string message, string sUUID, string sUserId, string sUserPIN) // { RunOnUiThread(() =&g

单击:

lstText.ItemClick += (sender, args) =>
{
    Logon(GetString(Resource.String.LogonMessage), sUUID, sUserId, sUserPIN);
};
private void Logon(string message, string sUUID, string sUserId, string sUserPIN) // 
    {
        RunOnUiThread(() =>
        {
            var uuidFetch = this.GetSystemService(Context.TelephonyService) as Android.Telephony.TelephonyManager;
            var IMEI = uuidFetch.DeviceId;

            var getUserId = LayoutInflater.From(this).Inflate(Resource.Layout.Login, null);
            getUserId.FindViewById<TextView>(Resource.Id.getUserId).Text = sUserId;

            var getPIN = LayoutInflater.From(this).Inflate(Resource.Layout.Login, null);
            getPIN.FindViewById<EditText>(Resource.Id.sUserPin).Text = sUserPIN;

            new AlertDialog.Builder(this)
            .SetTitle(GetString(Resource.String.LogonTitle))
            .SetMessage(message)
            .SetView(getUserId)
            .SetView(getPIN)
            .SetCancelable(true)
            .SetPositiveButton(GetString(Resource.String.LogonOk), (sender, e) =>
            {
                sUUID = IMEI;
                sUserId = "474";
                sUserPIN = getPIN.FindViewById<EditText>(Resource.Id.sUserPin).Text;
                Window.SetSoftInputMode(SoftInput.StateHidden);

                ThreadPool.QueueUserWorkItem(o => Authorize(sUUID, sUserId, sUserPIN));
                SetContentView(Resource.Layout.Splash);
            })
            .SetNegativeButton(GetString(Resource.String.LogonCancel), (sender, e) =>
            {
                Window.SetSoftInputMode(SoftInput.StateHidden);
            })
            .Show();
        });
var sUserId = view.FindViewById<TextView>(Resource.Id.sUserId);
sUserId.Text = item.sUserId != null ? item.sUserId : "";
警报对话框:

lstText.ItemClick += (sender, args) =>
{
    Logon(GetString(Resource.String.LogonMessage), sUUID, sUserId, sUserPIN);
};
private void Logon(string message, string sUUID, string sUserId, string sUserPIN) // 
    {
        RunOnUiThread(() =>
        {
            var uuidFetch = this.GetSystemService(Context.TelephonyService) as Android.Telephony.TelephonyManager;
            var IMEI = uuidFetch.DeviceId;

            var getUserId = LayoutInflater.From(this).Inflate(Resource.Layout.Login, null);
            getUserId.FindViewById<TextView>(Resource.Id.getUserId).Text = sUserId;

            var getPIN = LayoutInflater.From(this).Inflate(Resource.Layout.Login, null);
            getPIN.FindViewById<EditText>(Resource.Id.sUserPin).Text = sUserPIN;

            new AlertDialog.Builder(this)
            .SetTitle(GetString(Resource.String.LogonTitle))
            .SetMessage(message)
            .SetView(getUserId)
            .SetView(getPIN)
            .SetCancelable(true)
            .SetPositiveButton(GetString(Resource.String.LogonOk), (sender, e) =>
            {
                sUUID = IMEI;
                sUserId = "474";
                sUserPIN = getPIN.FindViewById<EditText>(Resource.Id.sUserPin).Text;
                Window.SetSoftInputMode(SoftInput.StateHidden);

                ThreadPool.QueueUserWorkItem(o => Authorize(sUUID, sUserId, sUserPIN));
                SetContentView(Resource.Layout.Splash);
            })
            .SetNegativeButton(GetString(Resource.String.LogonCancel), (sender, e) =>
            {
                Window.SetSoftInputMode(SoftInput.StateHidden);
            })
            .Show();
        });
var sUserId = view.FindViewById<TextView>(Resource.Id.sUserId);
sUserId.Text = item.sUserId != null ? item.sUserId : "";
private void登录(字符串消息、字符串sUUID、字符串sUserId、字符串sUserPIN)//
{
RunOnUiThread(()=>
{
var uuidtech=this.GetSystemService(Context.TelephonyService)作为Android.Telephony.TelephonyManager;
var IMEI=uuidetch.DeviceId;
var getUserId=LayoutInflater.From(this).Inflate(Resource.Layout.Login,null);
getUserId.findviewbyd(Resource.Id.getUserId).Text=sUserId;
var getPIN=LayoutInflater.From(this).Inflate(Resource.Layout.Login,null);
getPIN.FindViewById(Resource.Id.sUserPin).Text=sUserPin;
新建AlertDialog.Builder(此)
.SetTitle(GetString(Resource.String.LogonTitle))
.SetMessage(消息)
.SetView(getUserId)
.SetView(getPIN)
.SetCancelable(真)
.SetPositiveButton(GetString(Resource.String.LogonOk),(发送方,e)=>
{
sUUID=IMEI;
sUserId=“474”;
sUserPIN=getPIN.findviewbyd(Resource.Id.sUserPIN).Text;
Window.SetSoftInputMode(SoftInput.StateHidden);
QueueUserWorkItem(o=>Authorize(sUUID、sUserId、sUserPIN));
SetContentView(Resource.Layout.Splash);
})
.SetNegativeButton(GetString(Resource.String.LogonCancel),(发送方,e)=>
{
Window.SetSoftInputMode(SoftInput.StateHidden);
})
.Show();
});
正如您在alert对话框中看到的,我的sUserId是静态的(因为我正在测试和构建应用程序,而且我还处于开发的早期阶段),但我需要它是列表中的一个值,因为listview中的每个项目(ergo用户)都有自己的sUserId

我的项目适配器中的几行:

lstText.ItemClick += (sender, args) =>
{
    Logon(GetString(Resource.String.LogonMessage), sUUID, sUserId, sUserPIN);
};
private void Logon(string message, string sUUID, string sUserId, string sUserPIN) // 
    {
        RunOnUiThread(() =>
        {
            var uuidFetch = this.GetSystemService(Context.TelephonyService) as Android.Telephony.TelephonyManager;
            var IMEI = uuidFetch.DeviceId;

            var getUserId = LayoutInflater.From(this).Inflate(Resource.Layout.Login, null);
            getUserId.FindViewById<TextView>(Resource.Id.getUserId).Text = sUserId;

            var getPIN = LayoutInflater.From(this).Inflate(Resource.Layout.Login, null);
            getPIN.FindViewById<EditText>(Resource.Id.sUserPin).Text = sUserPIN;

            new AlertDialog.Builder(this)
            .SetTitle(GetString(Resource.String.LogonTitle))
            .SetMessage(message)
            .SetView(getUserId)
            .SetView(getPIN)
            .SetCancelable(true)
            .SetPositiveButton(GetString(Resource.String.LogonOk), (sender, e) =>
            {
                sUUID = IMEI;
                sUserId = "474";
                sUserPIN = getPIN.FindViewById<EditText>(Resource.Id.sUserPin).Text;
                Window.SetSoftInputMode(SoftInput.StateHidden);

                ThreadPool.QueueUserWorkItem(o => Authorize(sUUID, sUserId, sUserPIN));
                SetContentView(Resource.Layout.Splash);
            })
            .SetNegativeButton(GetString(Resource.String.LogonCancel), (sender, e) =>
            {
                Window.SetSoftInputMode(SoftInput.StateHidden);
            })
            .Show();
        });
var sUserId = view.FindViewById<TextView>(Resource.Id.sUserId);
sUserId.Text = item.sUserId != null ? item.sUserId : "";
var-sUserId=view.findviewbyd(Resource.Id.sUserId);
sUserId.Text=item.sUserId!=null?item.sUserId:“”;

如果需要,我将提供任何进一步的代码/信息。感谢您的时间、建议和任何提示,以帮助我解决我的问题。

您正在处理的
项click
事件的参数包含许多有用的内容,例如单击项在
列表视图
s
适配器中的位置,但是
视图及其内容

因此,如果您知道
列表视图项
视图包含一个
文本视图
,那么您可以在
项目单击
处理程序中使用如下代码,提取其内容:

lstText.ItemClick += (sender, args) =>
{
    var userIdTextView = args.View.FindViewById<TextView>(Resource.Id.sUserId);
    var userId = userIdTextView.Text;
}
lstext.ItemClick+=(发送者,参数)=>
{
var userIdTextView=args.View.findviewbyd(Resource.Id.sUserId);
var userId=userIdTextView.Text;
}

谢谢Cheesebaron。确实帮了我一点忙,尽管我仍然不知道在对话框启动后如何实际使用userId?很抱歉有新手提问,但我只是从C#上的dev开始学习(并没有真正按照自己的话学习它-边走边发现,通过示例学习:))我假设你知道如何处理用户ID!但是在
var userId…
行之后,你可以用它做任何你想做的事情,就像在你的第一个代码示例中一样,你可以调用
Logon
方法。好的,我昨天有一个很小的案例:D sUserId=fetchUserId;在Logon方法之前…不需要文本字段还有:)谢谢你的帮助!