2012-03-05 19 views
1

listviewでnotifyDataSetChangedを使用すると、onClickリスナーは数回だけ応答します。その後、onClickリスナーは機能しません。Android listview onClickが動作しない

listitemがnotifyDataSetChangedの場合は、一部のチャージが残っていると思います。

修正方法を教えてください。以下

コード:

@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; 

} 
+1

このコードではclickListenerが存在しないようです...あなたの質問をもう少しはっきりと書き直す必要があるか、まったく関係がないように見えるコードを投稿したことがあります。 – FoamyGuy

+0

すでに述べたように、あなたのコードはclickListenerとは何の関係もありません。リストビューの各行にどのように値を設定するかを表示するだけです。 –

+0

また、ListViewを扱うときは、通常setOnItemClickListenerがsetOnClickListenerの代わりに使用されます。 – Shellum

答えて

1

私はあなたがあなたのgetView()方法でthis.notifyDataSetChanged()を呼ぶべきではないかなり確信しています。それはおそらく何も役に立たないでしょう。

+0

ありがとうございます。 setOnItemClickListenerはうまく機能しています。 – user818992

+0

しかし、リストビューのアイコン画像は頻繁に他のアイコン画像を何度も切り替える。 – user818992

+0

お待ちください、画像がダウンロードされたときに更新されないことを意味しますか?あなたのデザインは間違っています。イメージがダウンロードされた時点を知らせる "通知機能"メカニズムが必要です。イメージがダウンロードされると、ImageViewが更新されます。データセットが実際には変更されていないので、 'notifyDataSetChanged()'を呼び出すことは意味がありません。 – dmon

関連する問題