簡體   English   中英

在Android中將子項動態添加到ListView

[英]Dynamically adding subitems to ListView in Android

我正在嘗試將信息動態添加到ListView。 我要添加的信息由“設備名稱”(主項)和“ MAC地址”(子項)組成。 下面是一個在線示例。 注意:我想用設備1的名稱替換項1,用設備1的MAC地址替換子項1,以此類推。 必須動態完成此操作,因為在掃描設備時會填充列表。

有效的XHTML

在將此標記為重復之前 ,我已經看過以下問題,但這些問題對我沒有幫助: 在Android中添加ListView子項文本如何在ListView中添加子項將項目和 子項 添加到ListView

通過閱讀這些問題得出的結論是,我需要實現一個自定義ArrayAdapter並重寫getView()方法。 我創建了一個包含兩個文本視圖的自定義布局:

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?

您的問題的答案是: ,如果您只想添加項目,則不需要創建自定義ArrayAdapter 但是,我建議您在自定義布局的情況下創建它,因為您將獲得對所顯示項目的大量控制。 您沒有在創建ArrayAdapter地方添加代碼,但是在這種情況下,我將使用構造函數。 重要的部分是第三個參數:在活動中,應將要添加的初始項目存儲在ArrayList ,然后,如果要添加新項目,只需將其添加到ArrayAdapter並調用notifyDataSetChanged()在您的適配器上。 只需這樣做,您的項目就會被添加到布局並顯示。 如果您需要為自己的ArrayAdapter覆蓋GetView方法,我建議您使用此鏈接 ,它有助於我理解整個過程。

您是否正在像這些教程一樣在Google中搜索一些listview示例:

http://www.vogella.com/tutorials/AndroidListView/article.html

http://www.mkyong.com/android/android-listview-example/

我認為他們逐步解釋了如何創建列表適配器

您需要將getter方法添加到適配器中

YourAdapter ...{

 List<Device> items = new ArrayList<Device>;

 public  List<Device> getItems(){
 return items;
 }

}

然后更改您需要的項目

...{
//for 1s item
Device item = getItems().get(0);
item.setTitle(macAdress)

}

並為您的適配器調用notifyDataSetChanged

...
yourListView.getAdapter().notifyDataSetChanged();
}

而已。 現在,您可以更改列表數據了。

對於您的問題,我認為是的。 最好創建自己的適配器,以便以后可以簡單地使用它。 在您的情況下(如果您不想在每次更改標題后都更改適配器),您肯定需要自定義適配器。 干杯

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM