我正在开发一个音板应用程序,其中我使用ListView活动。但是由于Android的ListView具有回收其ListViews的属性,所以 在滚动列表视图时,我对所选文本视图的更改都会反映在所有页面中。 我不希望这种情况发生。因此,我该如何正确处理。如果有人可以帮助我处理代码段,那将真的很有帮助,感谢您的努力。谢谢!

编辑:希望这可以更好地解释

我的课程扩展了ListActivity,ListView如下

[Image] [Text]
[Image] [Text]
[Image] [Text]

现在,当用户单击任何文本视图时,我需要更改该文本视图的图像。我通过以下代码实现它。

public void onItemClick(AdapterView<?> parent, View view,
           int position, long id) {

TextView tv = (TextView) view;
//Here I change the image with tv as reference
final Resources res = getBaseContext().getResources();
    final Drawable myImage = res.getDrawable(R.drawable.pause);
  //  myImage.
    final Drawable myImage1 = res.getDrawable(R.drawable.play);

    tv.setCompoundDrawablesWithIntrinsicBounds(myImage, null, null, null);

    MediaPlayer.OnCompletionListener listener = new MediaPlayer.OnCompletionListener(){
      public void onCompletion(MediaPlayer mp) {

         tv.setCompoundDrawablesWithIntrinsicBounds(myImage1, null, null, null);


      }
    };
}
有帮助吗?

解决方案

简短答案:将列表的适配器处理数据更新数据以正确渲染更改。也就是说,如有必要,覆盖/编辑getView()方法,以了解如何处理数据更改,编辑适配器的基础数据,调用notifydatasetchanged(),然后让这些数据更改传播到getView时,将其传播到视图。目前,您可能在不更改基础数据的情况下对视图进行了修改,这是对MVC模式的违反,无论视图回收位如何。

但是,考虑到您的一般问题,很难为您提供适合您特定情况的代码示例。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top