지금 4일째 헤매고 있습니다 ㅠㅠ

답변 부탁드립니다

전에는 호출이되었던거 같은데 몇개 소스를 추가 확장하다보니

호출이 안되고 있습니다 이유를 도무지 모르겠어요 ㅠㅠ


public class JAEWON extends ListActivity {

...
listView = (ListView) this.getListView();
  listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);


리스너는 두가지인데 스크롤리스너는 호출되어 잘되는데


listView.setOnScrollListener(new AbsListView.OnScrollListener() {

      public void onScroll(AbsListView view, int firstVisibleItem,
          int visibleItemCount, int totalItemCount) {
...
   }
  });


밑에 있는 리스트아이템클릭 리스너는  호출이 안되네요 -_-;;;;

 public void onListItemClick(ListView l, View v, int position, long id) {
      super.onListItemClick(l, v, position, id);
      Toast.makeText(JAEWON.this, "Click" + position, 1).show();
 }


위에것이 안되어 밑에 처럼 따로 지정해서 만들어 주어도 실행이 안되네요 ㅠ.ㅠ

listView.setOnItemClickListener(clickListener);

ListView.OnItemClickListener clickListener = new ListView.OnItemClickListener(){
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
         System.out.println("=========click======");
  }
 };


전체적인 로직은 버튼 클릭시

Thread에서 파싱등 내부작업을하고

그것이 끝나면 핸들러로 메세지를 보내어

핸들러에서

adapter.notifyDataSetChanged();
    setListAdapter(adapter);

이런식으로 되는데 구동자체는 잘되는데 왜 onListItemClick( )는 호출을 못하는지 모르겠습니다

onListItemClick( )가 호출이 안되는 상황이 따로 있는지요..


풀소스 밑에 첨부합니다 꼭 좀 해결책좀 알려주세요 ㅠㅠ

package com.jaewon;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.net.URLEncoder;
import java.util.ArrayList;

import android.app.ListActivity;
import android.app.ProgressDialog;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.text.method.LinkMovementMethod;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.view.inputmethod.InputMethodManager;
import android.widget.AbsListView;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class JAEWON extends ListActivity {
 ProgressDialog mProgress;
 DownThread mThread;
 String searchTxt = "";
 EditText et;
 private String SaveThumbnail[];//받아온 썸네일(스크롤시 이미 받은목록은 여기서 가져다 뿌려준다)
 private ArrayList<MyItem> arr_MyItem = null;
 private MyItem MyItem = null;
 private URL url = null;
 private String ConnectUrl = "";
 private String startTag = "";
 private MyListAdapter adapter;
 private TextView tv;
 private ImageView iv;
 private Button btn;
 private int strStart = 1; // 시작
 private int strDisplay = 15;// 보여줄 목록 개수
 ListView listView;
 private int nTotal = 0;
 private int mLexSIndex = 0;
 private String mTitle = "";
 private String mThumbnail = "";
 private String mLink = "";
 private String mText;
 LinearLayout linear;
 Animation ani1;
 TextView emptyTV;
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.main);

  //리스트가 없을때 화면
  emptyTV =(TextView)findViewById(R.id.emptystr);
        emptyTV.setVisibility(TextView.INVISIBLE);
       
        linear = (LinearLayout)findViewById(R.id.linear);
  
       
        //==에디트텍스트
  et = (EditText) findViewById(R.id.searchTxt);
  et.setText(searchTxt);
  et.setOnClickListener(new View.OnClickListener() {

   public void onClick(View v) {
    // TODO Auto-generated method stub
    String str = et.getText().toString();
    if (str != "")
     et.setText("");
   }
  });
  //==
  
  //==검색버튼
  btn = (Button) findViewById(R.id.searchBtn);
  btn.setOnClickListener(new Button.OnClickListener() {

   public void onClick(View v) {

    arr_MyItem = new ArrayList<MyItem>();
    adapter = new MyListAdapter(JAEWON.this, R.layout.row,
      arr_MyItem);
    adapter.clear();

    searchTxt = et.getText().toString();

    if (searchTxt.equals("") || searchTxt == null) {
     Toast.makeText(getBaseContext(), "검색어가 없습니다",
       Toast.LENGTH_SHORT).show();
    }

    else {
     linear.startAnimation(ani1);
     
     //==키보드 사라지게==
     InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
     imm.hideSoftInputFromWindow(et.getWindowToken(), 0);
     //================
     
     mProgress = ProgressDialog.show(JAEWON.this, "",
       "loading...", true);
     mThread = new DownThread(1);
     mThread.start();

    }
   }
  });
  //==
  
  //애니메이션을 불러온다
  ani1 = AnimationUtils.loadAnimation(this, R.anim.rotate2);
  
  listView = (ListView) this.getListView();
  listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
  
//  listView.setOnItemClickListener(new OnItemClickListener() {
//
//   @Override
//   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
//     long arg3) {
//
//    System.out.println("=========clickclickclickclick======");
//
//   }
//  });
  
  //==리스트뷰 스크롤 리스너
  listView.setOnScrollListener(new AbsListView.OnScrollListener() {

   public void onScrollStateChanged(AbsListView view, int scrollState) {

   }

   public void onScroll(AbsListView view, int firstVisibleItem,
     int visibleItemCount, int totalItemCount) {
    if (nTotal > totalItemCount) {
     if (firstVisibleItem + visibleItemCount == totalItemCount) {
      strStart = strStart + strDisplay;
      // XMLParse3();
      // setListAdapter(mNewsAdapter);
      // setSelection(firstVisibleItem);
      mProgress = ProgressDialog.show(JAEWON.this, "",
        "loading...", true);
      GetSearchList(strStart);
      mAfterDown.sendEmptyMessage(1);
      setSelection(firstVisibleItem);
     }
    }
    // Toast.makeText(NaverSearchToolArray.this, "Total : " + nTotal
    // + ", Curr : " + totalItemCount, 1);
    // editText.setText("Total : " + nTotal + ", Curr : " +
    // totalItemCount);
   }
  });
  //==
  
  listView.setOnItemClickListener(clickListener);
 }

 ListView.OnItemClickListener clickListener = new ListView.OnItemClickListener(){
  @Override
  public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
    long arg3) {
   // TODO Auto-generated method stub
   System.out.println("=========click======");
  }
 };
 
 /**
  * XmlPullParser를 이용 xml을 읽는다.
  */
 void GetSearchList(int position) {
  strStart = position;
  searchTxt = et.getText().toString();
  String encode_searchTxt = "";
  encode_searchTxt = URLEncoder.encode(searchTxt);
  
  //==리스트 마지막 중복 처리
  if(strDisplay>(nTotal - position)&&nTotal!=0){
   strDisplay = nTotal - position;
  }
  //==
  
  ConnectUrl = "http://openapi.naver.com/search?key=29b0a07ddfe7502eb2d0c585cd448a32&query="
    + encode_searchTxt
    + "&target=image&sort=sim&start="
    + strStart
    + "&display=" + strDisplay;
  
  strDisplay =15;//리스트 마지막 중복 처리후 다시 돌려준다
  
  System.out.println("ConnectUrl : " + ConnectUrl);
  System.out.println("encode_searchTxt : " + encode_searchTxt);
  
  //==해당 URL을 스트림으로 일어 가져온다(parser로 보냄)
  try {
   URL url = new URL(ConnectUrl);
   InputStream in = url.openStream();
   InputStreamReader reader = new InputStreamReader(in, "utf-8");
   StringBuffer sb = new StringBuffer();
   char[] cbuf = new char[512];
   int len = 0;
   
   while ((len = reader.read(cbuf, 0, cbuf.length)) > 0) {
    sb.append(cbuf, 0, len);
   }
   
   parse(sb.toString());
   
  } catch (Exception e1) {
   e1.printStackTrace();
  }
  //==
 }
 
/**
 * 파싱
 * @param xmlContent
 */
 public void parse(String xmlContent) {
  clear();
  mText = xmlContent == null ? "" : xmlContent;
  boolean isFirst = true;

  mTitle = next("<title>", "</title>");
  nTotal = Integer.parseInt(next("<total>", "</total>"));
  mLink = next("<link>", "</link>");
  mThumbnail = next("<thumbnail>", "</thumbnail>");
  SaveThumbnail = new String[nTotal];
  if(nTotal==0){
   emptyTV.setVisibility(TextView.VISIBLE); 
  }
  System.out.println("nTotal : " + nTotal);
  
  while (mTitle != "") {
   if (!isFirst) {
    MyItem = new MyItem();
    MyItem.title = mTitle.replace("&lt;", "<").replace("&gt;", ">")
      .replace("<b>", "").replace("</b>", "").replace(
        "<strong>", "").replace("</strong>", "")
      .replace("&amp;", "").replace("quot;", "").replace(
        "#039;", "").replace("#39;", "").replace("lt;", "").replace("1gt;", "").replace("6gt;", "").replace("2gt;", "").replace("3gt;", "");
    MyItem.link = mLink;
    MyItem.thumbnail = mThumbnail.replace("&lt;", "<").replace(
      "&gt;", ">").replace("<b>", "").replace("</b>", "")
      .replace("<strong>", "").replace("</strong>", "")
      .replace("&amp;", "");
    arr_MyItem.add(MyItem);
   }
   isFirst = false;
   mTitle = next("<title>", "</title>");
   mLink = next("<link>", "</link>");
   mThumbnail = next("<thumbnail>", "</thumbnail>");
  }
 }
 
/**
 *xml의 해당태그의  내용을 가져온다
 */
 protected String next(String strStart, String strEnd) {
  int i1 = mText.indexOf(strStart, mLexSIndex);
  int i2 = mText.indexOf(strEnd, mLexSIndex);
  if (i1 < mLexSIndex || i1 >= i2) // not found.
   return "";

  String ret = mText.substring(i1 + strStart.length(), i2);
  mLexSIndex = i2 + strEnd.length();

  return ret;
 }

 @Override
 public void onListItemClick(ListView l, View v, int position, long id) {
  // TODO Auto-generated method stub
  super.onListItemClick(l, v, position, id);
  Toast.makeText(JAEWON.this, "Click" + position, 1).show();
  Log.i("==", "===========");
  System.out.println("========click l: " + l + " v:" + v + " position:"
    + position + " id:" + id);
  Log.e("==", "===========");
 }

 public void clear() {
  nTotal = 0;
  mTitle = "";
  mLink = "";
  mThumbnail = "";
  mLexSIndex = 0;
 }

 /**
  * adapter
  */
 class MyListAdapter extends ArrayAdapter {
  Context maincon;
  LayoutInflater Inflater;
  ArrayList<MyItem> arrMyItem;
  int layout;
  MyItem getMyItem;

  public MyListAdapter(Context context, int textViewResourceId,
    ArrayList<MyItem> _arrMyItem) {

   super(context, textViewResourceId, _arrMyItem);

   this.arrMyItem = _arrMyItem;
   this.maincon = context;
   Inflater = (LayoutInflater) context
     .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
   layout = textViewResourceId;
   getMyItem = new MyItem();

  }

  /**
   * 항목하나를 출력하기위한 뷰생성하여 리턴
   *  ListView가 각 항목을 출력할때마다 호출한다
   *  position : 생성할 항목의순서값
   *  convertView : 이전에 생성된 차일드뷰
   *  parent : 뷰의 부모 즉 리스트뷰
   */
  public View getView(int position, View convertView, ViewGroup parent) {

   View v = convertView;

   if (v == null) {
    LayoutInflater vi = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = vi.inflate(R.layout.row, null);
   }
   getMyItem = (MyItem) arrMyItem.get(position);

   if (getMyItem != null) {
    tv = (TextView) v.findViewById(R.id.title);
    iv = (ImageView) v.findViewById(R.id.thumb);

    if (tv != null) {
//      tv.setText(Html.fromHtml("<a href='" + getMyItem.link
//      + "'>" + getMyItem.title+ "</a>"));

     tv.setText(getMyItem.title);

     tv.setMovementMethod(LinkMovementMethod.getInstance());
    }

    if (iv != null) {
     if (getMyItem.thumbnail == null) {
      
     }
     else {
      if(nTotal!=0){
       if (SaveThumbnail[position] == null) {
        iv.setImageResource(R.drawable.icon);
        DrawableManager dm = new DrawableManager();
        dm.fetchDrawableOnThread(getMyItem.thumbnail, iv);
        SaveThumbnail[position] = getMyItem.thumbnail;
       }
       else {
        try {
         iv.setImageBitmap(
           getRemoteImage(
             new URL(SaveThumbnail[position])));
        }
        catch (MalformedURLException e) {
         e.printStackTrace();
        }
       }
      }
      
     }
    }
   }
   return v;
  }
 }

 /**
  *URL을 bitmap으로
  */
 public Bitmap getRemoteImage(final URL aURL) {
  try {
   final URLConnection conn = aURL.openConnection();
   
   conn.connect();
   
   final BufferedInputStream bis = new BufferedInputStream(conn
     .getInputStream());
   
   final Bitmap bm = BitmapFactory.decodeStream(bis);

   bis.close();
   return bm;

  } catch (IOException e) {
   // Log.d("DEBUGTAG", "Oh noooz an error...");
  }
  return null;
 }

 /**
  * 백그라운드에서 작업할 쓰레드
  */
 class DownThread extends Thread {

  private int startPoint = 0;

  public DownThread(int _startPoint) {
   this.startPoint = _startPoint;
  }

  public void run() {
   try {
    GetSearchList(startPoint);
    // //핸들러에 메세지를 보낸다
    mAfterDown.sendEmptyMessage(0);
   } catch (Exception e) {
    e.printStackTrace();
   }

  }
 }

 /**
  * 핸들러
  */
 Handler mAfterDown = new Handler() {
  public void handleMessage(Message msg) {

   switch (msg.what) {
   case 0:
    adapter.notifyDataSetChanged();
    setListAdapter(adapter);
    mProgress.dismiss();
    break;
   case 1:
    mProgress.dismiss();
    break;
   }
  }
 };
}

ListView의 각 Row는 ImageView와 TextView를 하나씩 뿌려주고 있습니다

<RelativeLayout  xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:padding="5px"
android:layout_height="90px"
android:cacheColorHint="#00000000">

    <ImageView android:id="@+id/thumb"
     android:src="@drawable/icon"
     android:scaleType="fitXY"
     android:layout_alignParentRight="true"
        android:layout_marginLeft="2px"
        android:layout_height="76px"
        android:layout_width="76px"
        android:cropToPadding="true"
        android:fadingEdge="horizontal"
        android:fadingEdgeLength="10px"/>

    <TextView android:id="@+id/title"
     android:fadingEdge="horizontal"
     android:textStyle="bold"
     android:layout_height="wrap_content"
     android:layout_toLeftOf="@id/thumb"
     android:layout_width="fill_parent"
     android:layout_centerVertical="true"/>
     
</RelativeLayout>