public interface OnDataSelectionListener {
 /**
  * Method that is called when an item is selected in DataListView
  *
  * @param parent Parent View
  * @param v Target View
  * @param id ID for the View
  */
 public void onDataSelected(AdapterView parent, View v, int position, long id);
 
}
 
 
 
 
 
public class DataListView extends ListView {

 private IconTextListAdapter adapter;

 private OnDataSelectionListener selectionListener;
 
 public DataListView(Context context) {
  super(context);
  init();
 }
 public DataListView(Context context, AttributeSet attrs) {
  super(context, attrs);
  init();
 }
 
 private void init() {
        setOnItemClickListener(new OnItemClickAdapter());
 }

 public void setAdapter(BaseAdapter adapter) {
  super.setAdapter(adapter);
 }
 
 public void addFooterView (View v) {
  super.addFooterView(v);
 }

 public BaseAdapter getAdapter() {
  return (BaseAdapter)super.getAdapter();
 }
 

 public void setOnDataSelectionListener(OnDataSelectionListener listener) {
  this.selectionListener = listener;
 }

 public OnDataSelectionListener getOnDataSelectionListener() {
  return selectionListener;
 }
 
 class OnItemClickAdapter implements OnItemClickListener {
  
  public OnItemClickAdapter() {
   
  }
  public void onItemClick(AdapterView parent, View v, int position, long id) {
   
   if (selectionListener == null) {
    return;
   }
   
   selectionListener.onDataSelected(parent, v, position, id);
   
  }
  
 }
 
}
 
위와같이 정의해서 사용하고 있습니다.
 
이곳 선달님의 강좌에서 NavigationGroupActivity를 사용해서 만들고 있는데
 
안드로이드 2.2버전에서는 잘 되는데 4.0버전에서는 뒤로가기 버튼 눌렀다가 다시 누르면 먹통입니다..
 
디버그를 해봐도 뒤로가기 누른 후 손으로 마구마구 터치를 해도  리스너 자체가 동작을 안하는거 같습니다.
 
희안하게 스크롤링은 됩니다. ㅡㅡ^ 밑으로 쭉 스크롤링하고 누르면 되는경우도 있습니다.
 
어찌 설명을 해야할지 몰라서 일단 이렇게 질문 드려봅니다..
 
NavigationGroupActivity 뒤로가기 관련 스크립트는 아래와 같습니다
 
public void back() {  // Back Key가 눌러진 경우의 처리
           if ( history.size() >  1 ) {  
               history.remove( history.size() - 1 );  
               setContentView( history.get(history.size() - 1));
           }
          else {  
               finish();  // 최상위 Level의 경우 TabActvity을 종료해야한다.
           }  
     }
 
아래는 리스너 부분 소스코드입니다.

  list.setAdapter(adapter);
  
  list.setOnDataSelectionListener(new OnDataSelectionListener() {
   public void onDataSelected(AdapterView parent, View v, int position, long id) {
    IconTextItem curItem = (IconTextItem) adapter.getItem(position);
    String[] curData = curItem.getData();
    Toast.makeText(getApplicationContext(), "Selected : " + curData[0], 2000).show();
     
    Intent intent = new Intent(DeptViewActivity.this, ListViewActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP |Intent.FLAG_ACTIVITY_SINGLE_TOP);
    intent.putExtra("plcd", curData[1]);
    goNextHistory("ListViewActivity",intent);
   }
  });