我正在尝试将信息动态添加到 ListView。我添加的信息包括“设备名称”(主项)和“MAC 地址”(子项)。下面是网上的一个例子。注意:我想用设备 1 的名称替换项目 1,用设备 1 的 MAC 地址替换子项目 1,等等。这必须动态完成,因为列表是在扫描设备时填充的。
.
在这被标记为重复之前,我查看了以下问题,但它们没有帮助我: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/