2011-12-05 32 views
5

カスタマイズされたSimpleAdapterでマップリストアイテムを削除した後にListViewアイテムを更新する方法を知っていますか?Android:カスタマイズされたSimpleAdapterのアイテム削除時にリストを更新する方法

list.remove(position)で削除リスト項目を正常に実装しましたが、list.notifyAll()関数を呼び出そうとしましたが、「java.lang.IllegalMonitorStateException:オブジェクトがロックされていませんnotifyAll()の前にスレッドによって "。

私があなたを助けてくれることを願っています。カスタムSimpleAdapterのコードは次のとおりです。

public class DeleteAdapter extends SimpleAdapter { 

    Context context; 
    List<? extends Map<String, ?>> list; 
    int resource; 
    String[] from; 
    int[] to; 

    public FDeleteAdapter(Context context, List<? extends Map<String, ?>> data, 
      int resource, String[] from, int[] to) { 
     super(context, data, resource, from, to); 

     this.context = context; 
     this.list = data; 
     this.resource = resource; 
     this.from = from; 
     this.to = to; 
     // TODO Auto-generated constructor stub 
    } 

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

     final View row = super.getView(position, convertView, parent); 

     final Button delete = (Button) row.findViewById(R.id.deletebut); 
     final TextView title = (TextView) row.findViewById(R.id.label); 

     delete.setOnClickListener(new OnClickListener() { 

      public void onClick(View view) { 

       deleteDialog xdialog = new deleteDialog(context, "Delete? ", position) { 

        @Override 
        public boolean onOkClicked() { 

         list.remove(position); 
         list.notifyAll(); 

         return true; 
        } 
       }; 
       xdialog.show(); 
      } 
     }); 

     return row; 
    } 
}; 

ありがとうございます。

答えて

2

リストのnotifyAll()ではなく、アダプタのnotifyDataSetChanged()関数を呼び出す必要があります。

+0

が、それは私が「タイプから)非静的メソッドnotifyDataSetChanged(static参照できません」と表示...あなたはそれを解決する方法を私に教えることができますか? – user1082138

+1

'DeleteAdapter.this.notifyDataSetChanged()'を使用してください。 – inazaruk

+0

はい!それは働いている!ありがとうございました^^ – user1082138

1

使用

this.notifyDataSetChange(); 
+0

notifyAll()は、他のアダプターまたはスレッドに、更新または作業を行っていることを通知します。 –

+0

しかし、それは私に "非静的メソッドnotifyDataSetChanged()型から静的な参照を作成することはできません" ...あなたはそれを解決する方法を教えてくれますか? – user1082138

+0

私の編集をチェックしてください。代わりにこれを使用してください。 –

関連する問題