Android listview onClick不';行不通

Android listview onClick不';行不通,android,android-listview,Android,Android Listview,当我在listview上使用notifyDataSetChanged时,onClick listener只响应几次。之后,onClick侦听器就不工作了 我猜当listitem被更改时,一些更改将保留 请告诉我怎么修 代码如下: @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder; if (convertView == null)

当我在listview上使用notifyDataSetChanged时,onClick listener只响应几次。之后,onClick侦听器就不工作了

我猜当listitem被更改时,一些更改将保留

请告诉我怎么修

代码如下:

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;
    if (convertView == null) {
        holder = new ViewHolder();
        convertView = mInflater.inflate(R.layout.list_row, null);
        holder.mIconImg = customFindViewById(convertView, R.id.icon_img);
        holder.mTitleText = customFindViewById(convertView, R.id.item_title_text);
        holder.mDescText = customFindViewById(convertView, R.id.item_descr_text);
        convertView.setTag(holder);
    } else {
        holder = (ViewHolder) convertView.getTag();
    }

    HashMap<IField, Object> item = getItem(position);
    String imageUrl = getHashmap(item, ItemField.ICON_URL);
    Drawable image = ImageCache.getImage(imageUrl);
    if (image == null) {
        ImageDownloadTask task = new ImageDownloadTask(holder.mIconImg, null, null);

        holder.mIconImg.setImageResource(R.drawable.error_ic);

        try {
            task.execute(Utility.getHashmap(item, ItemField.ICON_URL));
        } catch (RejectedExecutionException e) {
            e.printStackTrace();
        }
    } else {
        holder.mIconImg.setImageDrawable(image);

    }
    String title = getHashmap(item, ItemField.CATEGORY_LIST_TEXT);
    holder.mTitleText.setText(title);
    this.notifyDataSetChanged();
    mItemList.get(position);

    // convertView.getFocusables(position);
    // convertView.clearFocus();
    convertView.setEnabled(true);
    return convertView;

}
@覆盖
公共视图getView(int位置、视图转换视图、视图组父视图){
视窗座;
if(convertView==null){
holder=新的ViewHolder();
convertView=mInflater.充气(R.layout.list_行,空);
holder.mIconImg=customfindviewbyd(convertView,R.id.icon\u img);
holder.mTitleText=customfindviewbyd(convertView,R.id.item\u title\u text);
holder.mDescText=customfindviewbyd(convertView,R.id.item\u descr\u text);
convertView.setTag(支架);
}否则{
holder=(ViewHolder)convertView.getTag();
}
HashMap item=getItem(位置);
字符串imageUrl=getHashmap(item,ItemField.ICON\uURL);
Drawable image=ImageCache.getImage(imageUrl);
if(image==null){
ImageDownloadTask任务=新建ImageDownloadTask(holder.mIconImg,null,null);
holder.mIconImg.setImageResource(R.drawable.error_ic);
试一试{
执行(Utility.getHashmap(item,ItemField.ICON_URL));
}捕获(拒绝执行异常e){
e、 printStackTrace();
}
}否则{
支架mIconImg.setImageDrawable(图像);
}
String title=getHashmap(项目、项目字段、类别、列表、文本);
holder.mTitleText.setText(标题);
this.notifyDataSetChanged();
mItemList.get(位置);
//convertView.getFocusables(位置);
//convertView.clearFocus();
convertView.setEnabled(true);
返回视图;
}

我很确定您不应该在
getView()
方法中调用
this.notifyDataSetChanged()
。它也可能没有做任何有用的事情。

我很确定您不应该在
getView()
方法中调用
this.notifyDataSetChanged()
。它也可能没有做任何有用的事情。

这段代码中似乎没有clickListener。。。要么你需要把你的问题说得更清楚一点,要么你发布的代码似乎不太相关。正如前面提到的,你的代码与clickListener无关。您只需展示如何填充ListView的每一行。另外,在处理ListView时,通常使用setOnItemClickListener而不是setOnClickListener。我在其他类上使用setOnItemClickListener。它在滚动之前工作得很好。这段代码中似乎没有clickListener。。。要么你需要把你的问题说得更清楚一点,要么你发布的代码似乎不太相关。正如前面提到的,你的代码与clickListener无关。您只需展示如何填充ListView的每一行。另外,在处理ListView时,通常使用setOnItemClickListener而不是setOnClickListener。我在其他类上使用setOnItemClickListener。它在滚动之前工作得很好。谢谢你。setOnItemClickListener工作得很好。但是列表视图上的图标图像经常多次打开其他图标图像。等等,你的意思是图像在下载时不会更新吗?那么你的设计是错误的。您需要一个“通知”机制,它会让您知道图像何时下载,然后更新
ImageView
。调用
notifyDataSetChanged()
毫无意义,因为数据集实际上没有更改。谢谢。setOnItemClickListener工作得很好。但是列表视图上的图标图像经常多次打开其他图标图像。等等,你的意思是图像在下载时不会更新吗?那么你的设计是错误的。您需要一个“通知”机制,它会让您知道图像何时下载,然后更新
ImageView
。调用
notifyDataSetChanged()
毫无意义,因为数据集实际上没有更改。