【发布时间】:2013-03-14 08:33:29
【问题描述】:
在我的应用程序中,我有一个带有“部分”的 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;
}
}
我做错了什么?
【问题讨论】:
-
添加您在适配器上使用的代码。
标签: c# android listview xamarin