【问题标题】:Android: create a listview that covers half the screen and updates itselfAndroid:创建一个覆盖一半屏幕并自行更新的列表视图
【发布时间】:2025-12-31 06:10:07
【问题描述】:

我正在编写一个应用程序,您可以在其中输入几个字母,它会创建一个按顺序使用这些字母的单词列表(但不一定是连续的)。

我希望我的列表视图只占用文本输入字段和两个按钮下方的屏幕(文本字段和按钮处于线性布局中,并且在屏幕顶部不占用太多空间)。

另外,我有一个包含我想在列表中显示的所有单词的 arrayList,但我不知道如何在每次调用搜索函数时使用新的 arrayList 更新它。

感谢您的帮助。

【问题讨论】:

    标签: java android list listview arraylist


    【解决方案1】:

    也许将您的第一个 LinearLayout(小窗体)和 ListView 放在第二个 LinearLayout(垂直)中。

    然后对于您的数据,您可以使用 ArrayAdapter(或扩展它,但看起来您的列表项布局应该很简单,所以实际上不需要)将您的数组链接到 ListView,并且您应该能够找到足够的方法在该类中:notifyDataSetChanged()、getFilter()、更新内部适配器 ArrayList 等的各种方法。

    【讨论】:

    • 我刚刚再次调用setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, words));(这是我最初用来设置列表的内容)并且很好地重新填充了它。这是一种可以接受的方式,还是有更有效的方式?
    【解决方案2】:

    您可能还想查看在列表视图中添加标题...类似于...

        lv = getListView();
        LayoutInflater inflater = getLayoutInflater();
        ViewGroup header = (ViewGroup) inflater.inflate(R.layout.myheader,
                lv, false);
        lv.addHeaderView(header, null, false);
    

    【讨论】:

    • 我对标题不熟悉,但我可以弄清楚。那么标题将是文本框和按钮?
    • 是的,标题可以是您创建的单独布局,并且可以在其中包含任何内容并占用您想要的空间。然而,这不会随着列表视图滚动,它将停留在一个地方。如果您只是搜索它,实现起来并不难。
    • 当然,你知道如何更新吗?如果是这样,您介意将此标记为答案吗?我也将不胜感激。
    最近更新 更多