ExpandableListView控件,很好的解決了listView無法進行折疊和分類的功能(在不進行自定義的情況)。但是它也有一些無法解決的問題,比如伸縮沒有動畫,前方的箭頭位置不能更換,也不能更換圖示等。
機關的項目整好用到這樣的一個功能,就看了一下,現在把它做一下總結。效果如圖:
這個圖是最後的效果,采用的是第三方開源的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