访问xamarin.android中listview行内的textview
我创建了一个列表视图,每行包含5个文本视图。现在我想点击最后一个文本视图,并被重定向到一个新页面。我的问题是我不知道如何访问textview。我尝试在自定义适配器中执行此操作:访问xamarin.android中listview行内的textview,listview,xamarin.android,Listview,Xamarin.android,我创建了一个列表视图,每行包含5个文本视图。现在我想点击最后一个文本视图,并被重定向到一个新页面。我的问题是我不知道如何访问textview。我尝试在自定义适配器中执行此操作: var t = view.FindViewById<TextView>(Resource.Id.textView5); t.Click +=delegate { Android.Widget.Toast.MakeText(context, t.Text,
var t = view.FindViewById<TextView>(Resource.Id.textView5);
t.Click +=delegate {
Android.Widget.Toast.MakeText(context, t.Text, Android.Widget.ToastLength.Short).Show();
};
var t=view.findviewbyd(Resource.Id.textView5);
t、 单击+=委派{
Android.Widget.Toast.MakeText(context,t.Text,Android.Widget.ToastLength.Short).Show();
};
我用烤面包片只是想看看这个功能是否有效。但事实并非如此。当我运行应用程序并点击文本视图时,我不断地得到祝酒词,它没有停止。正确的方法是什么?
非常感谢。此问题与listview项目重用有关,请创建以下类
public class LocalOnclickListener : Java.Lang.Object, View.IOnClickListener
{
public void OnClick(View v)
{
HandleOnClick();
}
public System.Action HandleOnClick { get; set; }
}
然后在GetView方法中,像下面的代码一样使用它。它将使单击事件在TextView中仅执行一次
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null) // no view to re-use, create new
view = mainActivity.LayoutInflater.Inflate(Resource.Layout.layout1, null);
TextView textView = view.FindViewById<TextView>(Resource.Id.textView1);
textView.Text = items[position];
var local = new LocalOnclickListener();
local.HandleOnClick = () =>
{
Toast.MakeText(mainActivity, "click", ToastLength.Short).Show();
};
textView.SetOnClickListener(local);
return view;
}
public override View GetView(int位置、视图转换视图、视图组父视图)
{
视图=转换视图;
如果(view==null)//没有要重用的视图,则创建新的
view=mainActivity.LayoutFlater.Inflate(Resource.Layout.layout1,null);
TextView TextView=view.FindViewById(Resource.Id.textView1);
Text=items[位置];
var local=new LocalOnclickListener();
local.HandleOnClick=()=>
{
Toast.MakeText(mainActivity,“click”,ToastLength.Short).Show();
};
SetOnClickListener(本地);
返回视图;
}
或者您可以简单地使用以下代码
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null) // no view to re-use, create new
view = mainActivity.LayoutInflater.Inflate(Resource.Layout.layout1, null);
view.FindViewById<TextView>(Resource.Id.My_textView1).Text = items[position];
TextView textView = view.FindViewById<TextView>(Resource.Id.textView1);
textView.Text = items[position];
// textView.Click += TextView_Click;
if (!textView.HasOnClickListeners)
{
textView.Click += (o, e) =>
{
Toast.MakeText(mainActivity, "click", ToastLength.Short).Show();
};
}
return view;
}
public override View GetView(int位置、视图转换视图、视图组父视图)
{
视图=转换视图;
如果(view==null)//没有要重用的视图,则创建新的
view=mainActivity.LayoutFlater.Inflate(Resource.Layout.layout1,null);
view.FindViewById(Resource.Id.My_textView1).Text=items[position];
TextView TextView=view.FindViewById(Resource.Id.textView1);
Text=items[位置];
//textView.Click+=textView\u Click;
如果(!textView.HasOnClickListeners)
{
文本视图。单击+=(o,e)=>
{
Toast.MakeText(mainActivity,“click”,ToastLength.Short).Show();
};
}
返回视图;
}
下面是一个类似的线程,您可以参考它: