5

Tôi sử dụng ExpandableListView trong ứng dụng Android của mình muốn thực hiện hành động nếu người dùng nhấp vào yếu tố nhóm, vì vậy tôi đã xác định một số OnLongClickListener trong phần mở rộng BaseExpandableListAdapter của mình. Trình lắng nghe hoạt động như được mong đợi nhưng các phần tử con không mở rộng nữa. Bất kỳ ý tưởng?Android ExpandableListView Trình nghe nhấp vào nhóm dài ngăn chặn mở rộng

public class ConnectionAdapter extends BaseExpandableListAdapter { 
    ... 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, 
          ViewGroup parent) { 
     // convertView is a LinearLayout 
     convertView.setOnLongClickListener(new OnLongClickListener() { 
      public boolean onLongClick(View v) { 
       // my action here 
       return true; 
      } 
     }); 
    } 
    ... 
} 

Trả lời

1

Lý do mã của bạn không tiếp tục xử lý bất kỳ sự kiện 'onClick' nào khác là vì bạn đang chuyển 'true' trong lợi nhuận của bạn. Nếu bạn chỉ ra rằng một sự kiện đã được xử lý, HĐH sẽ ngừng cố gắng xử lý thêm bất kỳ sự kiện nào nữa. Để quá trình này diễn ra sự kiện này và cũng mở rộng, bạn cần phải thay đổi trả lại thành false thay vì đúng

+3

Tôi đã cố gắng trả về false. Nhưng cùng một vấn đề vẫn còn cho tôi. Nhóm sẽ không mở rộng sau khi triển khai onLongClicklistener cho convertview –

+0

Tôi có cùng một vấn đề, ngay sau khi tôi thực hiện một trình nghe nhấp chuột dài trên mục nhóm của tôi, nhấp chuột ngắn (để mở rộng nhóm) ngừng hoạt động ... bất kỳ trợ giúp đánh giá cao. –

4

Bạn có thể đặt setOnItemLongClickListener trên expandablelistview của mình. ExpandableListView.PACKED_POSITION_TYPE_GROUP là id của một nhóm, thay đổi thành ExpandableListView.PACKED_POSITION_TYPE_CHILD và bạn có thể thao tác với các dấu bấm dài trên các nhóm con.

Something như thế:

pager_income = (ExpandableListView) findViewById(R.id.income_scroll); 

    pager_income.setOnItemLongClickListener(new OnItemLongClickListener() { 
     @Override 
     public boolean onItemLongClick(AdapterView<?> parent, View view, int position, long id) { 
      if (ExpandableListView.getPackedPositionType(id) == ExpandableListView.PACKED_POSITION_TYPE_GROUP) { 
       // Your code with group long click 

       return true; 
      } 

      return false; 
     } 
    }); 
Các vấn đề liên quan