嗨,我是 Android/Xamarin Dev 的新手,我遇到了问题。我从这里跟随一个例子。我有一个带有 Custom ArrayAdapter 的 ListFragment 。我使它像这样(ViewHolder),当我向下滚动时,我的项目会感到困惑。我的意思是,如果我有一个包含 5 个项目的列表,并且当我向下滚动到其他项目时,一个项目的 textview 值为 10,则某些项目随机获取值 10,我逐步调试并且我的列表/数组不包含值 10,我找不到问题的根源。
当我停止使用它时:
if (view != null)
{
holder = view.Tag as MenuItemHolder;
}
我没有问题,但我缺乏表演。
PS对不起我的英语,我是希腊人,对不起我的坏帖子我是新来的:(
编辑这里是我的代码:问题是当我让 holder.NumberTextView.Text +1 可以,但是当我滚动 +1 时随机到其他项目
public override View GetView(int position, View convertView, ViewGroup parent)
{
MenuItemHolder holder = null;
var view = convertView;
if (view != null)
{
holder = view.Tag as MenuItemHolder;
}
if (holder == null)
{
holder = new MenuItemHolder();
view =LayoutInflater.From(Context).Inflate(Resource.Layout.rowWithButtons, null);
holder.RemoveButton = view.FindViewById<Button>(Resource.Id.DecreaseButton);
holder.AddButton = view.FindViewById<Button>(Resource.Id.IncreaseButton);
holder.NumberTextView = view.FindViewById<TextView>(Resource.Id.NumberTextView);
holder.AddButton.Click += delegate
{
holder.NumberTextView.Text = (Convert.ToInt32(holder.NumberTextView.Text) + 1).ToString();
};
holder.RemoveButton.Click += delegate
{
if ((Convert.ToInt32(holder.NumberTextView.Text) > 1))
{
holder.NumberTextView.Text = (Convert.ToInt32(holder.NumberTextView.Text) - 1).ToString();
}
};
view.Tag = holder;
}
holder.Title.Text = GetItem(position).Name;
return view;
}
public class MenuItemHolder : Java.Lang.Object
{
public TextView Title { get; set; }
public Button OptionsButton{ get; set; }
public TextView NumberTextView{ get; set; }
public Button AddButton{ get; set; }
public Button RemoveButton{ get; set; }
public Button DoneButton { get; set; }
}