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项目,但不是列表视图本身^^
我可能不完全明白膨胀的手段,然后......这样的布局被添加到ListView中我主要布局:S – neildeadman 2010-11-11 09:22:43
文本所有的细节和颜色都在适配器的getView方法和设置当它们出现时都显示正确。我的问题是位置被重置,并且相同的布局再次被添加到列表视图 – neildeadman 2010-11-11 09:24:08