Android listview onClick不';行不通
当我在listview上使用notifyDataSetChanged时,onClick listener只响应几次。之后,onClick侦听器就不工作了 我猜当listitem被更改时,一些更改将保留 请告诉我怎么修 代码如下: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)
@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()
毫无意义,因为数据集实际上没有更改。