android - 在 Android 中动态添加子项到 ListView

标签 android listview android-arrayadapter subitem

我正在尝试将信息动态添加到 ListView。我添加的信息包括“设备名称”(主项)和“MAC 地址”(子项)。下面是网上的一个例子。注意:我想用设备 1 的名称替换项目 1,用设备 1 的 MAC 地址替换子项目 1,等等。这必须动态完成,因为列表是在扫描设备时填充的。

Valid XHTML .

在这被标记为重复之前,我查看了以下问题,但它们没有帮助我:Adding ListView Sub Item Text in Android , How to add subitems in a ListView , Adding Items and Subitems to a ListView

我通过阅读这些问题得出的结论是,我需要实现一个自定义的 ArrayAdapter 并覆盖 getView() 方法。我创建了一个包含两个 TextView 的自定义布局:

cyan_list.xml

<?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="fill_parent"
    android:orientation="vertical" >

<TextView
    android:id="@+id/main_item"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/cyan"/>

<TextView
    android:id="@+id/sub_item"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:textAppearance="?android:attr/textAppearanceLarge"
    android:textColor="@color/dark_cyan"/>

</LinearLayout>

然后我尝试在我的 Activity 类中创建自定义 ArrayAdapter,但我不知道要在我的 public View getView(final int position, View convertView, ViewGroup parent) 方法中放入什么。此外,如果我只想添加一个 textview 子项,是否需要创建自定义 ArrayAdapter?

最佳答案

您的问题的答案是:NO,如果您只想添加项目,则不需要创建自定义 ArrayAdapter。不过,我建议您在自定义布局时创建它,因为您可以更好地控制要显示的项目。您没有在创建 ArrayAdapter 的地方添加代码,但在您的情况下我会使用 this构造函数。重要的部分是第三个参数:在您的 Activity 中,您应该存储一个 ArrayList,其中包含您要添加到 ArrayAdapter 的初始项目,然后,如果您想添加一个新项目,您只需添加它到 ArrayAdapter 并在您的适配器上调用 notifyDataSetChanged()。只需这样做,您的项目就会被添加到布局中并显示出来。如果您需要为自己的 ArrayAdapter 覆盖 GetView 方法,我推荐这个 link ,它帮助我理解了整个事情。

关于android - 在 Android 中动态添加子项到 ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21210427/

相关文章:

未找到证书路径的 Android DownloadManager 信任 anchor

java - 如何修复 "error: <item> inner element must either be a resource reference or empty."?

Java Open 套接字获取连接被拒绝尝试连接到本地主机服务器

java - 如何将变量/值添加到 ListView 并将其发送到新 Activity

Android ActionBar/ActionBarSherlock 多项选择微调器

Android AccessibilityNodeInfo PerformAction ACTION_ACCESSIBILITY_FOCUS

android - android应用程序中的软键盘全屏

java - Android Xml Pull 解析器错误 - SitesDownloadTask.onPostExecute

android - 让 ArrayAdapter 带有对象列表,以在 ListView 中显示包含字符串的对象

android - 如何为 AlertDialog 创建 setAdapter()