원본글 : 커스텀리스트뷰에서 getItemIdAtPosition 관련...


안녕하세요?
--------
 protected void onPostExecute(final ArrayList<StockData> result) { 
   GroupAdapter adapter;
   adapter = new GroupAdapter(getApplicationContext(), R.layout.list_group01, result);
   ListView myList = (ListView)findViewById(R.id.stockListView);
   myList.setAdapter(adapter);
--------
코드의 일부분인데요.
이런식으로 커스텀 adapter를 만들어 주자나용.. 그렇다면 이 아답터에서나 myList에서 다시result이것을 빼오거나.. 
result의 특정 item만 Select 해올수는 없나요? 여기서는 바로 result를 컨트롤 하면되겠지만...
그냥 알고 싶어요 방법이 있는지 없는지..ㅠㅠ. ㄷㄷㄷ..
 
커스텀뷰가 아닌경우는 getItemIdAtPosition(arg2); 식으로 현재 클릭한 item의 데이터를 가져올수 있던데...
질문이 좀.. 어설프긴 한데.. 이해하신 고수님은 한말씀..^^












-- 아답타 내부에서 --

아답타 내부에서 클릭이벤트를 만들고 그 포지션에 맞는 아이템을 가지고 오려면

클릭되는 뷰(위젯)에 setTag(position) 을 하시고,

클릭이벤트 있는 곳에서 int position = (Integer)v.getTag(); 하시면 포지션(인덱스)을 가지고 올 수 있습니다.


커스텀 아답타에서는 생성자에서 파라미터로 넘어온 리스트를 전역변수(멤버변수)로 받아서 가지고 계시면 되구요.





-- 아답타를 사용하는 액티비티에서 --

커스텀 리스트를 부르는 액티비티에서도 OnItemClickListener 를 사용해서 할 수 있는데요.

onItemClick(AdapterView<?> parent, View v, int position, long id)

요 순서대로 넘어오므로 position이 클릭된 녀석의 포지션입니다.



액티비티에는 리스트가 있으므로, position을 사용해서 리스트에서 꺼내면 되구요,

아님 StockData sd = (StockData)parent.getAdapter().getItem(position); 이렇게도 사용할 수 있구요.

아님 position 대신에 아까 setTag로 저장해놨던 position 을 꺼내서 사용해도 되구요.








 
 
Posted by croute

댓글을 달아 주세요

  1. 2012.03.09 20:44  댓글주소  수정/삭제  댓글쓰기

    비밀댓글입니다