Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.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
Java Xamarin Android Gridview与ART上的CustomAdapter问题_Java_C#_Android_Xamarin_Xamarin.android - Fatal编程技术网

Java Xamarin Android Gridview与ART上的CustomAdapter问题

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

我对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 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任务代码在哪里看毕加索图像加载库