我正在创建一个列表视图。我使用自定义适配器填充列表视图。在我的listview中有一个文本视图小部件。当我重置该文本视图的值时,它显示正常。然后,我向下滚动以获取listView中的新值。但是当我向上滚动文本视图窗口小部件时,会重置为旧的填充值。 我怎样才能永久保留我设定的新价值? 这是我的listview适配器类的代码,我将值填充到listview。我点击列表视图中的imageview,它会触发事件,将新文本值设置为列表视图中的文本视图窗口小部件。
<!DOCTYPE html>
<html>
<head>
<script>
if (window.XMLHttpRequest){// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} else {// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","cd_catalog.xml",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;
x=xmlDoc.getElementsByTagName("CD");
function displayCD()
{
for (var i=0; i<x.length;i++) {
artist=(x[i].getElementsByTagName("ARTIST")[0].childNodes[0].nodeValue);
title=(x[i].getElementsByTagName("TITLE")[0].childNodes[0].nodeValue);
year=(x[i].getElementsByTagName("YEAR")[0].childNodes[0].nodeValue);
txt="Artist: " + artist + "<br>Title: " + title + "<br>Year: "+ year;
document.getElementById("showCD").innerHTML+=(txt+"<hr/>");
}
}
</script>
</head>
<body onload="displayCD()">
<div id='showCD'></div>
</body>
</html>
我通过在上面的适配器类中的getView()参数中获取convertView值并通过它访问listview的textview小部件来重置listview的文本视图的值。然后,我将其设置为值999(例如用途)。现在,我向下滚动以获取更多新的listView项目。但是,在向上滚动我设置为旧项目的新值(999)时会消失。
请帮帮我。
答案 0 :(得分:1)
我自己做了一个测试。 ListView适配器将始终从myComments列表中获取值,因此为了根据需要更新TextView,您必须这样做:
ivLikes.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
likePosition = position;
myComments.get(position).setLikes("999");//Assume that your CommentInfo's likes is a string.
notifyDataSetChanged();
}
});