본문 바로가기
안드로이드

[안드로이드] ListView에 OnKeyListener 등록시 position 얻기

by 호군 2011. 6. 16.
반응형

안드로이드 App 개발을 하게되면, ListView를 많이 사용하게 됩니다.
ListView에서 몇번째 위치의 아이템을 선택했는지가 가장 중요하지만,
현재 보이는 ListView 아이템 중에 몇번째인지도 필요한 경우도 있습니다.
그래서 두 위치를 얻는 방법을 기록해둡니다.

public onCreate() {
    ListView listView = findViewById(R.id.listView);
    listView.setOnKeyListener(mOnKeyListener);
    ....
}

View.OnKeyListener mOnKeyListener = new View.OnKeyListener() {
    public boolean onKey (View view, int keyCode, KeyEvent event) {
        int itemCount = mListView.getCount();
        int selectedPosition = mListView.getSelectedItemPosition();
        int positionInVisible = selectedPosition - mListView.getFirstVisiblePosition();
        ....    
    }
}

코드에서는 OnKeyListener를 등록하였지만, OnTouchListener를 등록해도 상관없습니다.
selectedPosition은 ListView 전체에서의 position을 나타내고,
positionInVisible은 ListView에서 보여지는 Item 중 position을 나타냅니다.
반응형