SwipeMenuListView 서브 메뉴 클릭시 서브메뉴가 닫히지 않는현상
private SwipeMenuListView blockList = null;
blockList = (SwipeMenuListView) findViewById(R.id.block_list);
SwipeMenuCreator creator = new SwipeMenuCreator() {
@Override
public void create(SwipeMenu menu) {
SwipeMenuItem deleteItem = new SwipeMenuItem(BlockedFriendListActivity.this);
deleteItem.setBackground(new ColorDrawable(Color.rgb(0xF9, 0x3F, 0x25)));
deleteItem.setWidth(Utility.dip2pixel(BlockedFriendListActivity.this, 90));
deleteItem.setIcon(R.drawable.ic_delete);
menu.addMenuItem(deleteItem);
}
};
blockList.setMenuCreator(creator);
blockList.setOnMenuItemClickListener(new OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(final int position, SwipeMenu menu, int index) {
// TODO 자동 생성된 메소드 스텁
if(index == 0){
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
// friendListUpdated로 인해 테이블이 다시 그려지기 전에
// false를 리턴하여 열려지 메뉴가 닫히도록 해야한다.
// 그렇지 않으면 Delete 메뉴가 다음 아이템으로 전이되어
// 표시될 수도 있다. 매번 발생하지는 않지만 분명한 버그이고
// 따라서 일단 먼제 메뉴가 정상적으로 닫히고 나서 friendListUpdated가
// 호출되도록 해야한다. 이는 메뉴를 닫는 일이 애니메이션으로 처리되기 때문이다.
// 500ms가 다소 길어보이긴 하지만 보기에 좋고 편하다.
try {
Friend friend = itemList.get(position);
ChatDeamon chatDemon = ChatDeamon.getInstance();
chatDemon.sendUnblock(friend);
itemList.remove(position);
blockListAdapter.notifyDataSetChanged();
}
catch (Exception e) {
}
}
}, 500);
}
return false;
}
});