【问题标题】:Adding multiple views to row of ListView dynamically动态地将多个视图添加到 ListView 行
【发布时间】:2018-03-19 01:53:51
【问题描述】:

我正在尝试制作一个聊天客户端,让我的用户能够发送文本、图像、视频、音乐文件等。

我知道如何为列表动态添加行,但是它只是将字符串添加到 ArrayList 并通过 ArrayAdapter 反映在列表上。对我来说这是不可预测的,用户可以添加字符串、视频、图像或音乐文件。我怎样才能添加它们?

【问题讨论】:

    标签: android listview android-arrayadapter


    【解决方案1】:
    1. 为您的音频列表项视图、视频列表项视图、字符串列表项视图制作不同的布局。
    2. 在适配器的 getView() 方法中检查要显示的内容类型。如果是音频,则从 xml 扩充音频视图,添加相应的内容并返回正确的扩充视图。

    关键是要能够在 getView() 方法中找出内容的类型,并相应地为不同的视图充气。

    【讨论】:

    • 您需要实现自己的自定义列表视图适配器并遵循 Shivam Verma 提供的建议。
    • 好的@Shivam ...我也在考虑这个程序。我问是因为我认为可能还有其他简单的程序。还有一个问题,我之前也提到过。如何将元素动态添加到此自定义适配器?
    • 向 ArrayList 添加新项,用于向自定义适配器提供数据,然后调用 adapter.notifyDataSetChanged()。您的视图将被添加到列表视图中。
    【解决方案2】:

    首先创建一个活动,以便您可以同时获取 Java 和 XML 文件。对于这个 XML 文件,只需拖放一个列表视图。我们不会在这里做任何动态。

    然后您需要为单行设计 XML 文件。为了您的目的,您可以创建一个新的 XML 布局并拖放 textview、imageview、videoview 等。最好将其设为线性布局。

    创建另一个 java 类。这是为了将自定义项目添加到列表中。根据元素是否包含某些值来添加元素。

    在活动的 java 文件中,您将设置将设计的行与 listview 和我们的 java 文件链接到自定义列表的适配器。

    访问以下链接。它会给你所有必要的代码。希望对你有帮助。

    http://www.androidhub4you.com/2013/09/dynamic-list-view-demo-in-android.html

    这对我来说真的很棒。现在,即使您没有添加任何内容,您也可能会发现 videoview 或 imageview 占用空间等问题。我建议删除每一行不需要的视图。您可以在自定义 java 文件中添加删除视图代码。使用以下代码删除视图。

    ((ViewGroup) image_view_name.getParent()).removeView(image_view_name);

    这里的image_view_name 是 ImageView、VideoView 或任何其他你想要的对象。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多