向上滚动时,Textview会重置为旧值

时间:2015-05-18 01:21:11

标签: android-listview textview android-adapter android-scrollview android

我正在创建一个列表视图。我使用自定义适配器填充列表视图。在我的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)时会消失。

请帮帮我。

1 个答案:

答案 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();
        }
    });