我正在处理日历活动并实现了一个适配器来处理数据。对于一个月中的每一天,我都有一个按钮,我为其设置了一个标签。然后,当按下按钮时,我可以从标签中分辨出它是哪个日期。可以跳到下个月/上个月,从而更改日历视图的数据。但是我的问题是,每次我设置按钮的标签(因为视图被重用)时,GRef 都会增加并且永远不会被释放,并且当它达到 2000 时应用程序崩溃。当取消注释设置标签的代码行时,Gref 不会增加,应用程序不会崩溃。以下方法来自我的适配器:
private int key = Resource.Id.string_key;
public override View GetView(int position, View convertView, ViewGroup parent)
{
View row = convertView;
if (row == null)
{
LayoutInflater inflater = (LayoutInflater)_context.GetSystemService(Context.LayoutInflaterService);
row = inflater.Inflate(Resource.Layout.calendar_grid_cell, parent, false);
}
// Get a reference to the Day gridcell
gridcell = (Button)row.FindViewById(Resource.Id.calendar_day_gridcell);
gridcell.SetOnClickListener(this);
string[] words = list[position].Split(delimiterChars);
gridcell.Text = words[2];
gridcell.SetTag(key, words[1]);
return row;
}
有人对我能做什么有建议吗?在设置新标签之前,我已经尝试将标签属性设置为空 - 或者我应该避免使用标签并找到其他方式吗?