在我的应用程序中,我有一个带有“部分”的 ListView。对于每个项目,我添加了一个字母,但它们仅对以该字母开头的第一个单词可见。它工作正常,但如果我在我的 ListView 中向下滚动,顺序会发生变化,这意味着这封信将转到下一项。
例子:
A
--
- Alligator
- Ant
- Antelope
- Ape
但是当我向下滚动时,会发生以下情况:
- Aligator
A
--
- Ant
- Antelope
- Ape
添加我在 GetView() 中实现的字母的函数
我怎么解决这个问题?我读到 ListView 在滚动时正在刷新,如何禁用刷新?还是有其他方法可以解决这个问题?
protected string old_char = "";
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = sw_items [position];
View view;
convertView = null;
view = (convertView ??
this.context.LayoutInflater.Inflate (Resource.Layout.ItemLayout,
parent,
false)) as LinearLayout;
var txtTitle = view.FindViewById<TextView> (Resource.Id.txtTitle);
txtTitle.SetText (sw_items [position].name, TextView.BufferType.Normal);
var alfabet = view.FindViewById<TextView> (Resource.Id.alfabet);
var linAlfabet = view.FindViewById<LinearLayout> (Resource.Id.Lin_Alfabet);
if (convertView == null) {
string cnv_char = item.name [0].ToString ().ToUpper ();
alfabet.Text = cnv_char;
if (cnv_char != old_char) {
alfabet.Visibility = ViewStates.Visible;
linAlfabet.Visibility = ViewStates.Visible;
} else {
alfabet.Visibility = ViewStates.Gone;
linAlfabet.Visibility = ViewStates.Gone;
}
//saving previous char
old_char = cnv_char;
}
return view;
}
}
我究竟做错了什么?