天天看點

ExpandableListView控件使用中一些小問題的總結

  ExpandableListView控件,很好的解決了listView無法進行折疊和分類的功能(在不進行自定義的情況)。但是它也有一些無法解決的問題,比如伸縮沒有動畫,前方的箭頭位置不能更換,也不能更換圖示等。

  機關的項目整好用到這樣的一個功能,就看了一下,現在把它做一下總結。效果如圖:

  

ExpandableListView控件使用中一些小問題的總結

  這個圖是最後的效果,采用的是第三方開源的AnimatedExpandableListView控件,不用擔心,它是繼承ExpandableListView,添加了伸縮動畫。

ExpandableListView控件在使用的時候,經常會遇到以下幾個問題:

 

1、去掉父項最左側的上下箭頭或是将它移動到最右側

2、點選父項展開子項的時候,有互斥的效果。就是一個展開,其它的就全是關閉

3、點選父項展開子項時,有相應的動畫

下面我們就一一說明以上三個問題

1、去掉父項最左側的上下箭頭或是将它移動到最右側

  這個功能,去掉父項最左側的上下箭頭,比較簡單,一行代碼

  

    //去掉前面一剪頭
     ExpandableListView.setGroupIndicator(null);
           

  将它移動到最右側,不好意思,這個沒有方法,你隻能自己處理,簡單的方法就是去掉左側的箭頭,然後在右側自己加圖檔處理。這個比較簡單,隻要在Adapter裡的getGroupView方法添加就行

  此方法有一個變量boolean isExpanded,它就是用來判斷狀态的,根據不同的狀态,你換一下右側的圖檔就OK了,如下

  

if (isExpanded) {
            gHolder.gnextIv.setImageResource(R.mipmap.ico_push_bot);
        }else {
            gHolder.gnextIv.setImageResource(R.mipmap.ico_next);
        }
           

 2、點選父項展開子項的時候,有互斥的效果。就是一個展開,其它的就全是關閉

  這個功能,隻要我們重寫setOnGroupExpandListener方法就OK了

  

/**
         * 各項顯示互斥,就是一個展開,另外的關閉
         */
        el_list.setOnGroupExpandListener(new ExpandableListView.OnGroupExpandListener() {
            @Override
            public void onGroupExpand(int groupPosition) {
                for (int i = ; i < mAdapter.getGroupCount(); i++) {

                    if (groupPosition != i) {
                        el_list.collapseGroup(i);
                    }
                }
            }
        });
           

 3、點選父項展開子項時,有相應的動畫

  這個隻能使用第三方控件,本身沒有法子。我使用的是AnimatedExpandableListView,說到這裡,我自己都在想,前面說了半天,有毛用啊。使用了第三方控件,前兩個不是白說。這裡強調一下,這個控件是繼承自ExpandableListView的,也就是上面說的兩點,在這裡都同樣實用。

  下載下傳:https://github.com/idunnololz/AnimatedExpandableListView

  例子下載下傳:http://download.csdn.net/detail/chenguang79/9759622