caTea 블로그

SwipeMenuListView 서브 메뉴 클릭시 서브메뉴가 닫히지 않는현상 본문

android

SwipeMenuListView 서브 메뉴 클릭시 서브메뉴가 닫히지 않는현상

ZaRas 2015. 7. 1. 11:19
반응형

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;

}

});

728x90