Android開發--淺談ExpandableListActivity

來源:互聯網
上載者:User

  ExpandableListActivity使用使用方法(可以和ListActivity進行對比)建立一個Activity類繼承ExpandableListActvity三個layout主布局 (注意這裡2個id都是android內建的 不是+id)包含<ExpandableListView> 注意其中android:id="@id/android:list" 還有一個android:drawSelectorOnTop="false"(選中時是否遮蓋文字)<TextView android:id="@id/android:empty"> 當無資料時一級目錄布局二級目錄布局(條目item樣式)建立Adapter將simpleExpandableListAdapter對象設定給當前ExpandableListActivitysetListAdapter(adapter);SimpleExpandableListAdapter使用為ExpandableListActivity提供資料//定義List 為一級條目提供資料List<Map<String, String>> groups=new ArrayList<Map<String, String>>();需要幾個條目 產生幾個Map對象Map<String, String> m1=new HashMap<String, String>();m1.put(group,Group1);m2.put(group,Group2);groups.add(m1);groups.add(m2); //定義List 設定二級子條目 一個子條目一個List 一個項 一個Map方法同上 建List(child1 child2)和Map(child:child1Data1;child:child1Data2) //定義一個List 儲存所有二級條目資料*List<List<Map<String, String>>> childs = new ArrayListM<List<Map<String, String>>>();childs.add(child1);childs.add(child2); //產生一個SimpleExpandableListAdapter對象new SimpleExpandableListAdapter(...);參數包括www.2cto.com(context內容物件,一級條目List對象,一級條目布局, new String[]{"groups"})指定一級條目資料的key,new int[]{R.id.groupTo}指定一級條目資料顯示的控制項id,二級條目的資料childs,二級條目布局,二級條目資料key(child),二級條目控制項id} 是實現的:這個執行個體用到三個布局檔案:第一個布局檔案---主架構布局:[html]  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"           android:orientation="vertical"           android:layout_width="match_parent"            android:layout_height="match_parent"           >          <ExpandableListView android:id="@id/android:list"                 android:layout_width="match_parent"                  android:layout_height="match_parent"                 android:drawSelectorOnTop="false"/>          <TextView android:id="@id/android:empty"                 android:layout_width="match_parent"                  android:layout_height="match_parent"                 android:text="No data"/>   </LinearLayout>   第二個布局檔案---組布局:[html]  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical" >      <TextView          android:id="@+id/group"          android:layout_width="match_parent"          android:layout_height="match_parent"          android:paddingLeft="60px"          android:paddingTop="10px"          android:paddingBottom="10px"          android:textSize="26sp"          android:text="No data"/>          </LinearLayout>   第三個布局檔案---子視圖布局:[html]  <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"      android:layout_width="match_parent"      android:layout_height="match_parent"      android:orientation="vertical" >       <TextView          android:id="@+id/child"          android:layout_width="match_parent"          android:layout_height="match_parent"          android:paddingLeft="50px"          android:paddingTop="5px"          android:paddingBottom="5px"          android:textSize="20sp"          android:text="No data"/>          </LinearLayout>   具體的實現代碼如下:[java]  public class ExpandableListActivity_Activity extends ExpandableListActivity {        @Override      protected void onCreate(Bundle savedInstanceState) {          super.onCreate(savedInstanceState);          setContentView(R.layout.activity_expandable_list_activity_);                    //定義一個List,這個List為一級條目提供資料          List<Map<String, String>> group=new ArrayList<Map<String,String>>();          Map<String, String> group1=new HashMap<String, String>();          group1.put("group", "group1");          Map<String, String> group2=new HashMap<String, String>();          group2.put("group", "group2");          group.add(group1);          group.add(group2);                    //定義一個List,這個List為第一個一級條目提供二級條目資料          List<Map<String, String>> child1=new ArrayList<Map<String,String>>();          Map<String, String> child1Data1=new HashMap<String, String>();          child1Data1.put("child", "child1Data1");          Map<String, String> child1Data2=new HashMap<String, String>();          child1Data2.put("child", "child1Data2");          child1.add(child1Data1);          child1.add(child1Data2);                    //定義一個List,這個List為第二個一級條目提供二級條目資料          List<Map<String, String>> child2=new ArrayList<Map<String,String>>();          Map<String, String> child2Data1=new HashMap<String, String>();          child2Data1.put("child", "child2Data1");          Map<String, String> child2Data2=new HashMap<String, String>();          child2Data2.put("child", "child2Data2");          child2.add(child2Data1);          child2.add(child2Data2);                    //定義一個List,這個List儲存所有的二級條目資料          List<List<Map<String, String>>> childs=new ArrayList<List<Map<String,String>>>();          childs.add(child1);          childs.add(child2);                    //產生一個SimpleExpandableListAdapter對象          /*          * 1.context          * 2.一級條目的資料          * 3.用來設定一級條目樣式的布局檔案          * 4.指定一級條目資料的key          * 5.指定一級條目資料顯示控制項的id          * 6.指定二級條目的資料          * 7.設定二級條目樣式的布局檔案          * 8.指定二級條目資料的key          * 9.指定二級條目資料顯示控制項的id          */          SimpleExpandableListAdapter selaListActivity=new SimpleExpandableListAdapter                  (this, group, R.layout.group, new String[]{"group"},                           new int[]{R.id.group}, childs,R.layout.child,                          new String[] {"child"}, new int[]{R.id.child});                    setListAdapter(selaListActivity);        }        @Override      public boolean onCreateOptionsMenu(Menu menu) {          // Inflate the menu; this adds items to the action bar if it is present.          getMenuInflater().inflate(R.menu.activity_expandable_list_activity_,                  menu);          return true;      }    }   

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.