【发布时间】:2015-03-05 08:35:21
【问题描述】:
您好,我是 Android/Xamarin Dev 的新手,我遇到了问题。我按照 here 的一个例子。我有一个带有 Custom ArrayAdapter 的 ListFragment 。我使它像this(ViewHolder)一样,当我向下滚动时,我的项目会感到困惑。我的意思是,如果我有一个包含 5 个项目的列表,并且当我向下滚动到其他项目时,一个项目的 textview 值为 10,则某些项目随机获取值 10,我逐步调试并且我的列表/数组不包含值 10,我找不到问题的根源。
当我停止使用这个时:
if (view != null)
{
holder = view.Tag as MenuItemHolder;
}
我没有问题,但我缺乏表现。
P.S 对不起我的英语,我是希腊人,对不起我的糟糕帖子我是新来的 :(
编辑这里是我的代码: 这方面的问题是当我让 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; }
}
【问题讨论】:
-
如果你能展示你的代码,那么我们可以帮助yoj
-
为什么我得到-1?我知道我的问题很难阅读,但我现在不能做得更好:(
标签: c# android xamarin fragment adaptor