2012-04-09 26 views
5

Tôi có một danh sách ExpandableListView và tôi muốn đăng nhập vào trang web khi nhấp vào một nhóm. Rất tiếc, mã bên dưới trả về luôn 0, như thể tôi đang nhấp vào nhóm thứ 0.Vị trí nhóm có thể mở rộng của AndroidViewView luôn ở trạng thái 0

exList.setOnGroupClickListener(new OnGroupClickListener() { 

    @Override 
    public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) { 
      groupPosition = ExpandableListView.getPackedPositionGroup(id); 

      Log.i("group position", groupPosition + ""); 
      return false; 
    } 

    }); 

Tôi cũng có một longclicklistener trên các nhóm và Childs trong đó hoạt động đúng:

exList.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_CHILD) { 
       groupPosition = ExpandableListView.getPackedPositionGroup(id); 
... 
} 

Bất kỳ ý tưởng?

+0

Bạn có sử dụng Bộ điều hợp tùy chỉnh cho ExpandableListView không? – Cata

+0

có. Những người nghe khác của tôi hoạt động đúng cách – erdomester

+0

ok, hãy đảm bảo phương thức getItem và getItemId của bạn trả lại giá trị hợp lệ và không phải 0 .. (trong Bộ điều hợp tùy chỉnh của bạn), bạn cũng có thể xem bộ điều hợp này http://developer.android.com/resources/ mẫu/ApiDemos/src/com/example/android/apis/view/ExpandableList1.html – Cata

Trả lời

0

Sử dụng trình nghe OnGroupExpandListener, tham số của phương thức onGroupExpand là vị trí của nhóm tại ExpandableListView.

Giống như rằng:

listView = (ExpandableListView) findViewById(R.id.expandableListView); 
listView.setOnGroupExpandListener(new OnGroupExpandListener() { 
    @Override 
    public void onGroupExpand(int groupPosition) { 
     Log.d(TAG, "pos " + groupPosition); 
    } 
}); 
0
@Override 
public Object getGroup(int groupPosition) { 
    Log.i(TAG, "* getGroup : groupPosition =" + groupPosition); 

    return categories[groupPosition]; 
} 

Khi bạn mở rộng BaseExpandableListAdapter, bạn sẽ nhận được phương pháp ghi đè lên trên. Đăng xuất ở trên đặt rõ ràng hiển thị số nhóm được nhấp.

Trong mã của tôi, danh mục nghĩa là tập dữ liệu tôi chuyển đến Danh sách có thể mở rộng dưới dạng nhóm.

Bạn sẽ có một cuộc gọi phương thức ghi đè khác;

@Override 
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) { 
... 
} 

Với phương pháp đó bạn có thể gọi như sau;

if(getGroup(groupPosition).toString().equals("GroupName")){ 
    //Do what even you like in for the clicked group 
} 

Đây là mã làm việc và hy vọng bạn có thể hiểu nó.

1

chế độ xem danh sách có thể mở rộng của bạn có thể nằm trong chế độ xem cuộn. Bạn không thể di chuyển lồng nhau.

+0

Cảm ơn! Tôi cần điều này. Tôi chỉ không thể hiểu những gì tôi đang làm sai. Tôi đã ở trong trường hợp này. – sunlover3

+1

rất vui được giúp đỡ ... !! :) – navalkishoreb

3

Hãy chắc chắn rằng bạn có điều này cho cách bố trí

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="vertical"> 


    <ExpandableListView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 

</LinearLayout> 

Bạn không thể có một ExpandableListView thành một scrollview.

Các vấn đề liên quan