この問題に関するすべての投稿を読みましたが、ListViewを更新できません。ListActivityを拡張しています。これが私のArrayAdapterです:
public List<String> songs = new ArrayList<String>();
public ArrayAdapter<String> allsongs;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
allsongs = new ArrayAdapter<String>(this,
R.layout.song_items, songs);
BindAllSongs();
ListView listView=getListView();
registerForContextMenu(listView);
}
ここで、ファイルを削除するときに、ListViewを更新します。
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo();
switch (item.getItemId()) {
case R.id.delete_file:
File file = new File(Environment.getExternalStorageDirectory().getPath() + "/AudioStreamRecorder/" + getListView().getAdapter().getItem(info.position).toString());
file.delete();
runOnUiThread(new Runnable() {
public void run() {
allsongs.notifyDataSetChanged();
}
});
return true;
case R.id.cancel:
return true;
default:
return super.onContextItemSelected(item);
}
}
私のBindAllSongs(); 方法:
public void BindAllSongs() {
...
...
setListAdapter(allsongs);
}
これはうまく機能します(ファイルはSDカードから削除されています)が、リストは更新されません。移動してからListViewに戻ると、アイテムが消えています。(ListViewに戻ると、BindAllSongs();が再度呼び出されます。)さらに情報が必要な場合は、お知らせください。