ExpandableListView長按GroupItem時,如何處理

    onItemLongClick方法第二個參數:view,這裏的view是你按中的位置對應的view。view有個方法getTag(int key)。如果在創建此view的時候就把groupPos,childPos通過setTag(int key, Object value)設置進去。

     要把groupPos,childPos通過setTag的方式綁定到view中,就必須操作該view的創建過程。要控制這個過程就必須要在自定義BaseExpandableListAdapter中重寫getGroupView及getChildView方法進行操作。

 

@Override
 public View getChildView(int groupPosition, int childPosition,
   boolean isLastChild, View convertView, ViewGroup parent) {
  //我這裏僅通過自己寫的mkChildView()方法創建TextView來顯示文字,更復雜的可以通過 LayoutInflater來填充一個view
  TextView childTv = mkChildView();
  // 標記位置
  // 必須使用資源Id當key(不是資源id會出現運行時異常),android本意應該是想用tag來保存資源id對應組件。
  // 將groupPosition,childPosition通過setTag保存,在onItemLongClick方法中就可以通過view參數直接拿到了!
      childTv.setTag(R.id.xxx01, groupPosition);
      childTv.setTag(R.id.xxx02, childPosition);
      return childTv;
 }
 @Override
 public View getGroupView(int groupPosition, boolean isExpanded,
   View convertView, ViewGroup parent) {
    TextView groupTv = mkGroupView();
     // 設置同getChildView一樣
     groupTv.setTag(R.id.xxx01, groupPosition);
     groupTv.setTag(R.id.xxx02, -1); //設置-1表示長按時點擊的是父項,到時好判斷。
     groupTv.setText(groups[groupPosition]);
     return groupTv;
 }

詳細出處參考:http://www.jb51.net/article/38521.htm

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章