【问题标题】:Android: Handle ListView RecycleAndroid:处理 ListView 回收
【发布时间】:2011-05-22 16:51:50
【问题描述】:

我正在开发一个使用 Listview Activity 的音板应用程序。但由于 Android 的 Listview 具有回收其列表视图的属性,我对所选文本视图所做的更改会在滚动列表视图时反映在所有页面中。我不希望这种情况发生。那么我该如何正确处理呢。如果有人可以帮助我编写代码 sn-p,那将非常有帮助,我感谢您的努力。谢谢!

编辑:希望这会更好地解释

我的类扩展了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);


      }
    };
}

【问题讨论】:

    标签: android listview recycle


    【解决方案1】:

    简答:让列表的适配器处理数据更新以正确呈现更改。也就是说,在必要时覆盖/编辑 getView() 方法以了解如何处理数据更改,编辑适配器底层的数据,调用 notifyDataSetChanged(),并在调用 getView 时让这些数据更改传播到视图。现在,您可能在不更改底层数据的情况下手动修改视图,这违反了 MVC 模式,无论视图回收位如何。

    不过,鉴于您提出问题的一般性,很难为您提供适合您的特定情况的代码示例。

    【讨论】:

    • 现在我编辑了我的问题。请看一下。现在你能用代码示例回答我吗?谢谢
    猜你喜欢
    • 1970-01-01
    • 2013-10-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多