Java Xamarin Android Gridview与ART上的CustomAdapter问题
我对android上的gridview和customadapter有问题。 (项目单元格包含图像视图、3个文本视图和2个按钮) 2台物理设备(1台使用安卓4.3(dalvik),1台使用安卓5.1.1(art)) 在dalvik设备上,gridview的滚动非常平滑。 在ART设备上,gridview的滚动速度非常慢 图像由getview中调用的asynctask加载 有什么建议吗 下面是我的GetView代码片段:Java Xamarin Android Gridview与ART上的CustomAdapter问题,java,c#,android,xamarin,xamarin.android,Java,C#,Android,Xamarin,Xamarin.android,我对android上的gridview和customadapter有问题。 (项目单元格包含图像视图、3个文本视图和2个按钮) 2台物理设备(1台使用安卓4.3(dalvik),1台使用安卓5.1.1(art)) 在dalvik设备上,gridview的滚动非常平滑。 在ART设备上,gridview的滚动速度非常慢 图像由getview中调用的asynctask加载 有什么建议吗 下面是我的GetView代码片段: public override View GetView(int posit
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = _orderItemLoader.OrderItems[position];
View itemView = LayoutInflater.From(_context).Inflate(Resource.Layout.OrderItemCell, parent, false);
var tvDisplayName = itemView.FindViewById<TextView>(Resource.Id.tvDisplayName);
var tvDisplayAmount = itemView.FindViewById<TextView>(Resource.Id.tvDisplayAmount);
var tvDisplayCount = itemView.FindViewById<TextView>(Resource.Id.textViewQuantity);
foreach (var _item in _orderItemLoader.OrderItems)
{
if (GetItemId(position) == _item.ItemId)
{
tvDisplayCount.Text = _item.Count.ToString();
break;
}
}
var btnPlus = itemView.FindViewById<Button>(Resource.Id.buttonPlus);
btnPlus.Focusable = false;
btnPlus.FocusableInTouchMode = false;
btnPlus.Clickable = true;
btnPlus.Tag = position;
btnPlus.Click += (s, e) =>
{
int pos = (int)((Button)s).Tag;
foreach (var itm in _orderItemLoader.OrderItems)
{
if (item.ItemId == GetItemId(position))
{
item.Count += 1;
tvDisplayCount.Text = item.Count.ToString();
break;
}
}
};
var btnMinus = itemView.FindViewById<Button>(Resource.Id.buttonMinus);
btnMinus.Focusable = false;
btnMinus.FocusableInTouchMode = false;
btnMinus.Clickable = true;
btnMinus.Tag = position;
btnMinus.Click += (s, e) =>
{
int pos = (int)((Button)s).Tag;
var tmpItem = GetItem(pos);
if (tmpItem != null)
{
if (tmpItem.Count > 1)
tmpItem.Count -= 1;
else
tmpItem.Count = 0;
tvDisplayCount.Text = tmpItem.Count.ToString();
}
};
var imgThumbail = itemView.FindViewById<ImageView>(Resource.Id.imgThumbnail);
imgThumbail.SetScaleType(ImageView.ScaleType.CenterCrop);
imgThumbail.SetPadding(8, 8, 8, 8);
tvDisplayName.Text = item.ItemName;
tvDisplayName.SetTextColor(Android.Graphics.Color.Black);
tvDisplayAmount.Text = ServiceManager.GetCurrency(item.Amount);
tvDisplayAmount.SetTextColor(Android.Graphics.Color.Black);
tvDisplayCount.SetTextColor(Android.Graphics.Color.Black);
new SetImageBitmapTask(item, imgThumbail, _activity).Execute("");
return itemView;
}
public override View GetView(int位置、视图转换视图、视图组父视图)
{
var item=_orderItemLoader.OrderItems[position];
View itemView=LayoutFlater.From(_context).充气(Resource.Layout.OrderItemCell,父项,false);
var tvDisplayName=itemView.findviewbyd(Resource.Id.tvDisplayName);
var tvdisplaymount=itemView.findviewbyd(Resource.Id.tvdisplaymount);
var tvDisplayCount=itemView.findviewbyd(Resource.Id.textViewQuantity);
foreach(orderItemLoader.OrderItems中的var\u项)
{
if(GetItemId(位置)=\u item.ItemId)
{
tvDisplayCount.Text=\u item.Count.ToString();
打破
}
}
var btnPlus=itemView.findviewbyd(Resource.Id.buttonlus);
btnPlus.Focusable=false;
btnPlus.FocusableInTouchMode=false;
btnPlus.Clickable=true;
btnPlus.Tag=位置;
点击+=(s,e)=>
{
intpos=(int)((按钮)s).Tag;
foreach(在_orderItemLoader.OrderItems中的变量itm)
{
if(item.ItemId==GetItemId(位置))
{
项目计数+=1;
tvDisplayCount.Text=item.Count.ToString();
打破
}
}
};
var btnMinus=itemView.findviewbyd(Resource.Id.buttonMinus);
btnMinus.Focusable=false;
btnMinus.FocusableInTouchMode=false;
btnMinus.Clickable=true;
btnMinus.Tag=位置;
BTN分钟。单击+=(s,e)=>
{
intpos=(int)((按钮)s).Tag;
var tmpItem=GetItem(pos);
如果(tmpItem!=null)
{
如果(tmpItem.Count>1)
tmpItem.Count-=1;
其他的
tmpItem.Count=0;
tvDisplayCount.Text=tmpItem.Count.ToString();
}
};
var imgThumbail=itemView.findviewbyd(Resource.Id.imgThumbail);
imgThumbail.SetScaleType(ImageView.ScaleType.CenterCrop);
imgThumbail.SetPadding(8,8,8,8);
tvDisplayName.Text=item.ItemName;
tvDisplayName.SetTextColor(Android.Graphics.Color.Black);
tvDisplayAmount.Text=ServiceManager.GetCurrency(item.Amount);
tvDisplayAmount.SetTextColor(Android.Graphics.Color.Black);
tvDisplayCount.SetTextColor(Android.Graphics.Color.Black);
新建SetImageBitmapTask(项,imgThumbail,_活动)。执行(“”);
返回项目视图;
}
我已经使用ViewHolder改进了列表的性能,我将向您展示一个示例,以便您可以实现
持证人:
public class StoreRecomendadaViewHolder : Object
{
public ImageView imgView { set; get; }
public TextView txtView { set; get; }
}
GetView:
public override View GetView(int position, View convertView, ViewGroup parent)
{
StoreRecomendadaViewHolder holder = null;
var view = convertView;
if (view != null)
holder = view.Tag as StoreRecomendadaViewHolder;
var item = items[position];
if (holder == null)
{
holder = new StoreRecomendadaViewHolder();
if (view == null)
{
Activity _activity = context;
view = _activity.LayoutInflater.Inflate(Resource.Layout.ItemStoreRecomendada, null);
}
holder.imgView = view.FindViewById<ImageView>(Resource.Id.imgView);
holder.txtView = view.FindViewById<TextView>(Resource.Id.txtView);
view.Tag = holder;
}
holder.txtView.SetText(item.NombreComercial, TextView.BufferType.Normal);
return view;
}
public override View GetView(int位置、视图转换视图、视图组父视图)
{
storerecondadaviewholder=null;
var-view=convertView;
如果(视图!=null)
holder=视图。标记为StoreRecondAdaViewHolder;
var项目=项目[位置];
if(holder==null)
{
holder=新的StoreRecomendadaViewHolder();
如果(视图==null)
{
活动_活动=上下文;
视图=_activity.LayoutInflater.Inflate(Resource.Layout.ItemStoreRecomendada,null);
}
holder.imgView=view.FindViewById(Resource.Id.imgView);
holder.txtView=view.findviewbyd(Resource.Id.txtView);
视图.标签=支架;
}
holder.txtView.SetText(item.nombrecomerical,TextView.BufferType.Normal);
返回视图;
}
你的asyn任务代码在哪里看毕加索图像加载库