gpt4 book ai didi

android - Buggy ListView 让我很难过

转载 作者:IT老高 更新时间:2023-10-28 21:41:10 25 4
gpt4 key购买 nike

我有一个 ListView,我在一个单独的 XML 文件中定义了每个项目的布局。在这个文件中,我包含了一个 RatingBar 和一个 EditText

我在这个 ListView 中以编程方式创建了 7-8 个项目。当我滚动浏览它们时,它似乎很麻烦。以下是一些示例:

  1. 如果我将焦点设置到第一行中的 EditText,然后向下滚动 ListView,则从其他行随机 EditTexts会有重点。似乎是焦点消失后的下一个 EditText 接收焦点。也许这是故意的,但作为用户,这似乎很奇怪。

  2. 如果我将焦点设置到 EditText,接收虚拟键盘,输入内容,然后单击虚拟键盘上的“完成”按钮,EditText虚拟键盘一消失就会清空。

  3. 有时,当我点击一个 EditText 时,会收到一个虚拟键盘并开始输入字母,当我输入它们时,这些字母会消失。

  4. 当我点击 EditText 时,虚拟键盘会显示出来,但 EditText 失去焦点,我必须点击 EditText再次。

  5. 即使我已将 RatingBar 设置为 focusable="false",如果我移动滚轮,它仍然会捕获焦点。

我的一个问题是,当我在虚拟键盘中键入一个字符时,所有可见的列表项都会重新绘制(并且由于 EditText 的文本设置为一些空数据,因此被清除。我不明白为什么 Android 会决定每次我输入一个字符时都重新绘制列表。

这是我用来绘制它们的 XML。它们是白色的气泡,有一个灰色的边框,还有一些文本,一个 RatingBar 和一个 EditText 里面:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:paddingTop="10dip"
android:paddingBottom="10dip"
android:paddingLeft="15dip"
android:paddingRight="15dip"
>
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_outer">
<LinearLayout
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="2dip"
android:background="@drawable/shape_inner">
<TextView
android:id="@+id/rating_category"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/dark_gray"
android:textStyle="bold"
android:layout_marginBottom="10dip" />
<RatingBar
android:id="@+id/rating_rating"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:numStars="5"
android:rating="0"
android:stepSize="1"
android:focusable="false"
android:clickable="false"
/>
<EditText
android:id="@+id/rating_text"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_column="1"
android:padding="6dip"
android:textColor="#000000"
android:gravity="left|top"
android:lines="3"
android:hint="Comment"
android:imeOptions="actionDone" />
</LinearLayout>
</LinearLayout>
</LinearLayout>

最佳答案

听起来 ListViews 不能很好地处理 EditTexts。我做了一些研究,共识似乎是“不要那样做”。所以我所采取的是创建一个简单的布局文件,它是一个内部带有 LinearLayout 的 ScrollView。在我的 onCreate 方法中,我为列表项使用的 View 膨胀并将其添加到 LinearLayout。我还将 View 添加到 ArrayList,以便以后可以将数据保存在每个 View 中。

这听起来合理吗?

关于android - Buggy ListView 让我很难过,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3468765/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com