ANDROID:适配器位置返回到零,并重新添加视图到ListView

问题描述:

我的应用程序需要能够以用户选择的顺序在一行上添加几个视图。ANDROID:适配器位置返回到零,并重新添加视图到ListView

我发现这个教程似乎完成了我想要的一些修改。

http://www.androidpeople.com/android-custom-listview-tutorial-example/ 

已经跟着教程,并进行必要的变更,代码工作,除了一个奇怪的问题。位置递增,但当它到达〜9时,它返回到零,然后重新添加已经在列表中的视图,因此永远不会达到> 9的视图。

此外,如果我向下滚动到底部,然后备份第一个条目已经改变!它可能会改变更多,但我没有检查。

通过一些测试,我发现textSize有一些效果。如果我将它设置得足够小,以便所有'行'将一次显示在屏幕上,那么它们显得很好。

这是我的列表视图的布局,被膨胀成主要布局:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:minHeight="60dip" 
    style="@style/DefaultTheme"> 
    <TextView 
     android:id="@+id/Line01" 
     android:layout_width="5dip" 
     android:layout_height="fill_parent" 
     android:background="#F00" /> 
    <TextView 
     android:id="@+id/Line02" 
     android:layout_width="5dip" 
     android:layout_height="fill_parent" 
     android:background="#0F0" /> 
    <TextView 
     android:id="@+id/Line03" 
     android:layout_width="5dip" 
     android:layout_height="fill_parent" 
     android:background="#00F" 
     android:layout_marginRight="5dip"/> 
    <LinearLayout 
     android:id="@+id/LinearLayout" 
     android:layout_weight="1" 
     android:layout_width="wrap_content" 
     android:layout_height="fill_parent" 
     android:orientation="vertical" 
     android:padding="2dip"> 
     <TextView android:id="@+id/Name" 
      android:text="Name" 
      style="@style/Name" /> 
     <TextView 
      android:id="@+id/Status" 
      android:text="Status" 
      style="@style/Status" /> 
    </LinearLayout> 
    <ImageView 
     android:id="@+id/StatusImage" 
     style="@style/StatusImage" /> 
</LinearLayout> 

我改变背景颜色和文字,但仅此而已。任何想法是什么问题?

谢谢!

我现在问这个问题并且不会完全回到教程中,我觉得这很愚蠢。

我只是在创建一个新的ViewHolder的时候,在我的布局中设置了我放置在我的主布局上的ListView中的值。因此,当我滚动时,视图被回收,但从未使用正确的视图设置进行更新。

现在一切正常!

干杯

这是因为ListView回收视图。它根据需要创建尽可能多的视图,然后将不可用的视图作为下一个回收。

所以你必须在适配器的getView或bindView方法中设置颜色/属性。

而顺便说一句。您发布的内容不会夸大ListView,因为它中没有“对象”。充其量,它可能是一个单一的ListView项目,但不是列表视图本身^^

+0

我可能不完全明白膨胀的手段,然后......这样的布局被添加到ListView中我主要布局:S – neildeadman 2010-11-11 09:22:43

+0

文本所有的细节和颜色都在适配器的getView方法和设置当它们出现时都显示正确。我的问题是位置被重置,并且相同的布局再次被添加到列表视图 – neildeadman 2010-11-11 09:24:08