1
即时通讯与xamarin android应用程序的问题是,一旦我调用适配器中的任何项目上的单击事件它将工作,但它调用的不仅仅是我单击的一个,例如我的意思是点击共享和共享意图将显示在列表视图适配器中的多个项目上,但不止一次。这是适配器中的代码。请让我知道如何解决这个问题。我曾试图代表,甚至要禁止上点击其他列表视图项的程度Adapterview点击事件
代码:
namespace NameSpace
{
public class dashboardAdapter : BaseAdapter<DashboardLINQ>
{
List<DashboardLINQ> items;
Activity context;
string mid;
public dashboardAdapter(Activity context, List<DashboardLINQ> items)
: base()
{
this.context = context;
this.items = items;
}
public override long GetItemId(int position)
{
return position;
}
public override DashboardLINQ this[int position]
{
get { return items[position]; }
}
public override int Count
{
get { return items.Count; }
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
View view = convertView;
if (view == null)
{
view = LayoutInflater.From(context).Inflate (Resource.Layout.dashboardItemLayout, null, false);
}
ImageView prof = view.FindViewById<ImageView>(Resource.Id.imageView1);
Koush.UrlImageViewHelper.SetUrlDrawable (prof, "http://www.mymentor.org.za/"+items [position].uPicLocal);
mid = items [position].MID;
TextView usrname = view.FindViewById<TextView> (Resource.Id.textView1);
usrname.Text = items [position].uFullName;
TextView date = view.FindViewById<TextView> (Resource.Id.textView2);
date.Text = items [position].pDate;
ImageView imagen = view.FindViewById<ImageView>(Resource.Id.imageView2);
Koush.UrlImageViewHelper.SetUrlDrawable (imagen, "http://www.mymentor.org.za/"+items [position].pImage);
TextView desc = view.FindViewById<TextView> (Resource.Id.textView3);
desc.Text = Html.FromHtml (items [position].pDesc).ToString();
TextView comlike = view.FindViewById<TextView> (Resource.Id.textView4);
comlike.Text = "Likes: "+items [position].likecnumrows+" Comments: "+items [position].commentscnumrows;
ImageButton like = view.FindViewById<ImageButton> (Resource.Id.button1);
ImageButton comment = view.FindViewById<ImageButton> (Resource.Id.button2);
ImageButton share = view.FindViewById<ImageButton> (Resource.Id.button3);
like.Click += delegate(object sender, EventArgs e) {
WebClient client = new WebClient();
Uri uri = new Uri("url");
NameValueCollection parameters = new NameValueCollection();
parameters.Add("UID", items[position].MID);
parameters.Add("PID", items[position].ID);
client.UploadValuesAsync(uri, parameters);
like.SetImageResource(Resource.Drawable.ButtonComment);
};
share.Focusable = false;
share.FocusableInTouchMode = false;
share.Clickable = true;
share.Click += delegate(object sender, EventArgs e) {
int MaxLength = 150;
var name = Html.FromHtml (items [position].pDesc).ToString();
if (name.Length > MaxLength) {
name = name.Substring(0, MaxLength) + "... My Mentor";
}
var myIntent = new Intent(Android.Content.Intent.ActionSend);
myIntent.PutExtra(Intent.ExtraText, name);
myIntent.SetType("text/plain");
this.context.StartActivity(Intent.CreateChooser(myIntent,"Choose an App"));
};
return view;
}
}
发生这种情况,因为Android会重新使用行。您可以尝试使用ViewHolder pattern.ill显示稍后如何执行此操作。 – XTL
@VetaLio请。一整天都在苦苦挣扎。 –
你试过了吗? – XTL