Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/234.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Xamarin Android解析中的ActionCall不工作_Android_Parsing_Xamarin_Textview - Fatal编程技术网

Xamarin Android解析中的ActionCall不工作

Xamarin Android解析中的ActionCall不工作,android,parsing,xamarin,textview,Android,Parsing,Xamarin,Textview,我有一个适配器,其中有来自视图的行,每一行都包含一些信息。我正在尝试拨打Actioncall,因此,如果有人单击带有电话号码的行,它就会开始拨号。这是可行的,但问题是我没有从文本视图中获取电话号码,而是获取一个随机号码 这是代码 当用户点击电话号码时的功能 private void TelSelected(TextView obj) { mTelefonNumar = FindViewById<TextView>(Resource.Id.t

我有一个适配器,其中有来自视图的行,每一行都包含一些信息。我正在尝试拨打Actioncall,因此,如果有人单击带有电话号码的行,它就会开始拨号。这是可行的,但问题是我没有从文本视图中获取电话号码,而是获取一个随机号码

这是代码

当用户点击电话号码时的功能

  private void TelSelected(TextView obj)
        {
            mTelefonNumar = FindViewById<TextView>(Resource.Id.textView3);
            Toast.MakeText(this, mTelefonNumar.ToString(), ToastLength.Long).Show();
            string stringtelefon = mTelefonNumar.ToString();
            var uri = Android.Net.Uri.Parse("tel:" + stringtelefon);
            var intent = new Intent(Intent.ActionCall, uri);
            StartActivity(intent);
        }
private void TelSelected(TextView obj)
{
mTelefonNumar=findviewbyd(Resource.Id.textView3);
MakeText(this,mTelefonNumar.ToString(),ToastLength.Long).Show();
字符串stringtelefon=mTelefonNumar.ToString();
var uri=Android.Net.uri.Parse(“电话:”+stringtelefon);
var intent=新的intent(intent.ActionCall,uri);
星触觉(意向);
}
Toast返回这个android.widget.TextView{2e4a768b V.ED..C……0198-698264#7f0b0055 app:id/textView3}

而Intent.ActionCall则拨打这个号码247680,但这个号码是另一个/

 public override View GetView(int position, View convertView, ViewGroup parent)
        {
            View row = convertView;

            if (row == null)
            {
                row = LayoutInflater.From(mContext).Inflate(mLayout, parent, false);
            }


            row.FindViewById<TextView>(Resource.Id.textView3).Text = Linfo[position].TelClient;

            row.FindViewById<TextView>(Resource.Id.textView3).Click += InformatiiListAdapter_Click;

            return row;
        }

        void InformatiiListAdapter_Click(object sender, EventArgs e)
        {
            //He clicked on the Telephone Number
            mNrApasat.Invoke((TextView)sender);
        }
public override View GetView(int位置、视图转换视图、视图组父视图)
{
视图行=转换视图;
if(行==null)
{
行=布局更平坦。从(mContext)。充气(mLayout,父项,false);
}
row.findviewbyd(Resource.Id.textView3).Text=Linfo[position].TelClient;
row.FindViewById(Resource.Id.textView3).Click+=InformatiiListAdapter\u Click;
返回行;
}
void InformatiiListAdapter\u单击(对象发送者,事件参数e)
{
//他按了一下电话号码
mNrApasat.Invoke((TextView)发送方);
}
。文本视图上的ToString()将显示有关该视图的信息,而不是显示的文本。以下几点可以解决这个问题:

((TextView)sender).Text;
而不是

((TextView)sender).ToString();
一种更简洁的方法(因为显示的文本可能并不总是一个可用的电话号码)是将号码存储在行“tag”属性中(您可以在其中存储任何内容)。 并在行上设置事件

public override View GetView(int position, View convertView, ViewGroup parent)
{
    View row = convertView;

    if (row == null)
    {
        row = LayoutInflater.From(mContext).Inflate(mLayout, parent, false);
    }

    row.SetTag(Linfo[position].TelClient);
    row.Click += InformatiiListAdapter_Click;
    row.FindViewById<TextView>(Resource.Id.textView3).Text = (string)row.GetTag();

    return row;
}

void InformatiiListAdapter_Click(object row, EventArgs e)
{
    //He clicked on the Telephone Number
    string phoneNumber = (string)(((View)row).GetTag());
    // do stuff with the phone number
}
public override View GetView(int位置、视图转换视图、视图组父视图)
{
视图行=转换视图;
if(行==null)
{
行=布局更平坦。从(mContext)。充气(mLayout,父项,false);
}
row.SetTag(Linfo[position].TelClient);
行.Click+=信息列表选项卡单击;
row.findviewbyd(Resource.Id.textView3).Text=(string)row.GetTag();
返回行;
}
void InformatiiListAdapter\u单击(对象行,事件参数e)
{
//他按了一下电话号码
字符串phoneNumber=(字符串)((视图)行.GetTag());
//用电话号码做些事情
}
另外,另一方面,FindViewByID在处理方面非常昂贵,避免做得太多,您可能希望查看ViewHolder模式,这将使滚动更加平滑


另外,最好在列表本身上设置项click listener,而不是在每个convertView上注册事件。

我在尝试您的行mNrApasat.Invoke(((TextView)sender.Text)时出错;-委托“System.Action”具有一些无效参数。mNrApasat的类型是行动是的,你从来没说过mNrApasat是什么。但是您可能不再需要它了,((View)row).GetTag()是电话号码字符串的一个字符串,所以您只需将它传递给另一个方法来执行电话或其他操作