各セル内に2つのtextviewがあり、textview要素の1つに対してclickイベントを処理する必要があるリストビューがあります。しかし、私は、アダプタのGetView()内にクリックイベントを置く、それは複数回呼び出されます。Xamarin.Android:複数回呼び出されたリストビューセル内のTextviewでイベントをクリック
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = tableItems[position];
ViewHolder holder;
View view = convertView;
if (view == null)
{
LayoutInflater layoutInflator = LayoutInflater.From(mContext);
view = layoutInflator.Inflate(Resource.Layout.myListViewCell, null);
holder = new ViewHolder();
holder.tvEmpName = view.FindViewById<TextView>(Resource.Id.tv_EmpName);
holder.tvEmpPhone = view.FindViewById<TextView>(Resource.Id.tv_EmpPhone);
view.Tag = holder;
}
else
{
holder = (ViewHolder)view.Tag;
}
holder.tvEmpName.Text = item.FullName;
holder.tvEmpPhone.Text = item.Phone;
holder.tvEmpPhone.Click += (sender, e) => {
// Click event to launch the Popup menu
// This event is being called multiple times, as Get view() being called multiple times.
};
return view;
}
私はthis同様のスレッドを経て、しかしどんな解決策を見つけることができませんでした。
'ViewHolder'を使わずにコードをテストしましたが、' view.FindViewById(Resource.Id .; ')を使って2つの' TextView'にアクセスするだけで、クリックイベントは 'TextView'がクリックされたときに1回だけ発生します。 –
Grace Feng:この場合、テキストビューは各リストビューセルの異なるデータを保持するので、無効なテキスト文字列をテキストビューに戻しています。 –
本当に?BaseAdapterを継承したアダプタをカスタマイズしました。 –