2011-04-12 55 views
6

在我的expandableListView中,我製作了一個自定義按鈕來展開/摺疊該組並擴展它,但是在摺疊時不起作用。在ExpandableListView中,如何檢測組合崩潰?

與此代碼

listView.setOnGroupClickListener(new OnGroupClickListener() { 

      @Override 
      public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 
       Log.d("group click"); 
       return true; 
      } 
     }); 

     listView.setOnGroupCollapseListener(new OnGroupCollapseListener() { 

      @Override 
      public void onGroupCollapse(int groupPosition) { 
       Log.d("group collapse"); 

      } 
     }); 

     listView.setOnGroupExpandListener(new OnGroupExpandListener() { 

      @Override 
      public void onGroupExpand(int groupPosition) { 
       Log.d("group expand"); 
      } 
     }); 

有了這個代碼: 當組被摺疊:按鈕

  • 點擊=展開組
  • 一下其他地方的組= 做些什麼由 處理setOnGroupClickListener

在組展開:

  • 上點擊按鈕=摺疊 組(OK,但...)
  • 一下其他地方的組= 摺疊組,而不是反應 從setOnGroupClickListener

爲什麼setOnGroupClickListener在點擊擴展組時未加載? 如何解決?

回答

1

我遇到了一個類似的問題。我需要所有的羣體始終被擴展和點擊。爲了使它工作,我在寫ExpandableListActivity這隻猴子代碼:

public void onCreate(Bundle savedInstanceState) { 
    ... 
    // Expanding all. 
    for(int i = 0; i < adapter.getGroupCount(); i++) 
     getExpandableListView().expandGroup(i); 
    ... 
} 

@Override 
public boolean onGroupClick(ExpandableListView parent, View v, 
     int groupPosition, long id) { 
    overrideStupidListBehaviour(groupPosition); 
    return false; 
} 

@Override 
public void onGroupCollapse(int groupPosition) { 
    // Forbidding it to collapse. 
    getExpandableListView().expandGroup(groupPosition); 
    overrideStupidListBehaviour(groupPosition); 
} 

private void overrideStupidListBehaviour(int groupPosition) { 
    // Code to do when onGroupClick is called 
} 

我真的很感興趣,如果有做一個正常的方式。

0

如果你點擊一個組,每次都應該調用它,但是如果你的按鈕或其他可點擊或可聚焦的按鈕在組視圖中超出/在組中,它只會觸發對象的onClick方法。 ..如果這不是解決方案,請提供更多的代碼。

@folone 有一個更好的辦法:

@Override 
public boolean onGroupClick(ExpandableListView parent, View v, 
     int groupPosition, long id) { 
    doSomething(); 
    return true; 
} 

回真正應該取消大部分默認的東西 - >展開/摺疊

1

//列表視圖組collasped聽衆

expListView.setOnGroupCollapseListener(new OnGroupCollapseListener() { 
@Override 
public void onGroupCollapse(int groupPosition) { 
    Toast.makeText(getApplicationContext(), 
      listDataHeader.get(groupPosition) + " Collapsed", 
      Toast.LENGTH_SHORT).show(); 

}}); 
1

使用這種方式很簡單

@Override 
public View getGroupView(int groupPosition, boolean isExpanded, 
         View convertView, ViewGroup parent) { 

if(isExpanded){ 
//do something when expanded 

}else{ 
//do something when collapsed or not expanded 

} 
........... 
}