@Override  
    public View getView(final int position, View convertView, ViewGroup parent) {  
        ViewHolder holder = null;  
        OnClick listener = null;  
        if (convertView == null) {  
            convertView = View.inflate(mContext, R.layout.listview_item, null);  
            holder = new ViewHolder();  
            holder.no = (TextView) convertView.findViewById(R.id.no);  
            holder.click = (TextView) convertView.findViewById(R.id.click);  
            listener = new OnClick();//在这里新建监听对象  
            holder.click.setOnClickListener(listener);  
            convertView.setTag(holder);  
            convertView.setTag(holder.click.getId(), listener);//对监听对象保存  
        } else {  
            holder = (ViewHolder) convertView.getTag();  
            listener = (OnClick) convertView.getTag(holder.click.getId());//重新获得监听对象  
        }  
        String value = list.get(position);//设置监听对象的值  
        holder.no.setText(value);  
        listener.setPosition(position);  
        Log.d(TAG,  
                "position is " + position + " listener is "  
                        + listener.toString());  
        return convertView;  
    }  
  
    class OnClick implements OnClickListener {  
        int position;  
  
        public void setPosition(int position) {  
            this.position = position;  
        }  
  
        @Override  
        public void onClick(View v) {  
            Log.d(TAG, list.get(position));  
        }  
    }  
 class ViewHolder {   
       TextView no;       
 TextView click;     }