当我使用json绑定listview时,数据在listview中显示很多时间。当我在listview中向下滚动时,再次重复数据显示在列表视图中
class.cs
namespace HSAPP
{
class ContListViewSpecNameClass : BaseAdapter<GetSpecNames>
{
List<GetSpecNames> objList;
Activity objActivity;
public ContListViewSpecNameClass (Activity objMyAct,List<GetSpecNames> objMyList) : base()
{
this.objActivity = objMyAct;
this.objList = objMyList;
}
public override GetSpecNames this[int position]
{
get
{
return objList[position];
}
}
public override int Count
{
get
{
return objList.Count;
}
}
public override long GetItemId(int position)
{
return position;
}
public override View GetView(int position, View convertView, ViewGroup parent)
{
var item = objList[position];
//View objView = convertView;
if (convertView == null)
{
convertView = objActivity.LayoutInflater.Inflate(Resource.Layout.ContListViewSpecName, null);
convertView.FindViewById<TextView>(Resource.Id.tvSpecID).Text = item.SpecID;
convertView.FindViewById<TextView>(Resource.Id.tvSpecName).Text = item.SpecName;
}
return convertView;
}
}
}
activity.cs
private void BindControl_BindSpecCompleted(object sender, BindControl.BindSpecCompletedEventArgs e)
{
jsonValue = e.Result.ToString();
if (jsonValue == null)
{
Toast.MakeText(this, "No Data For Bind", ToastLength.Long).Show();
return;
}
try
{
JArrayValue = JArray.Parse(jsonValue);
list = new List<GetSpecNames>();
int count = 0;
while (count < JArrayValue.Count)
{
GetSpecNames getSpecName = new GetSpecNames(JArrayValue[count]["SpecID"].ToString(), JArrayValue[count]["SpecName"].ToString());
list.Add(getSpecName);
count++;
}
listView.Adapter = new ContListViewSpecNameClass(this, list);
listView.ItemClick += ListView_ItemClick;
}
catch (Exception ex)
{
Toast.MakeText(this, ex.ToString(), ToastLength.Long).Show();
}
}
private void ListView_ItemClick(object sender, AdapterView.ItemClickEventArgs e)
{
var curItem = list[e.Position];
Toast.MakeText(this, curItem.SpecID + ' ' + curItem.SpecName, ToastLength.Long).Show();
}
输出: -
答案 0 :(得分:0)
我认为这是因为您在convertView
时没有更新convertView != null
。
来自文档
convertView - 如果可能,重用旧视图。注意:你应该 检查此视图是否为非null且之前是否为适当的类型 使用。如果无法转换此视图以显示 正确的数据,这种方法可以创建一个新的视图。