大家好我已经创建了一个在内部存储中保存文件并在ListView上显示它的类。但我的问题是如何删除项目?这是我的代码
public void onClick(View arg0) {
// TODO Auto-generated method stub
String fileName = edFileName.getText().toString();
String content = edContent.getText().toString();
FileOutputStream fos;
try {
fos = openFileOutput(fileName, Context.MODE_PRIVATE);
fos.write(content.getBytes());
fos.close();
Toast.makeText(
addThis.this,
fileName + " saved",
Toast.LENGTH_LONG).show();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
ShowSavedFiles();
}});
}
void ShowSavedFiles(){
SavedFiles = getApplicationContext().fileList();
ArrayAdapter<String> adapter
= new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
SavedFiles);
listSavedFiles.setAdapter(adapter);
}
答案 0 :(得分:1)
您应该在活动中为ListView创建并注册(registerForContextMenu(MyListView)
)上下文菜单,并在那里实现删除。
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.layout.menu, menu); //your xml menu
return true;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,ContextMenu.ContextMenuInfo menuInfo) {
super.onCreateContextMenu(menu, v, menuInfo);
menu.add(0, v.getId(), 0, "Delete");
}
@Override
public boolean onContextItemSelected(MenuItem item) {
if(item.getTitle().equals("Delete")){
TextView tv = (TextView)((RelativeLayout) ((AdapterView.AdapterContextMenuInfo)item.getMenuInfo()).targetView).getChildAt(0);
//tv.getText(); will probably hold your filename
//and just use the deleteFile() operations to remove it from the internal storage
.............
}
请阅读有关如何使用内部存储的信息 http://developer.android.com/guide/topics/data/data-storage.html#filesInternal
希望它有助于升技
答案 1 :(得分:1)
您可以使用getFilesDir().listFiles()
从内部删除文件,这将返回您的文件夹中存在的文件数组。
File[] files = getFilesDir().listFiles();
for (File file : files) {
file.delete();
}
如果您要删除particular
文件,可以获取name
,file
和compare
的{{1}}。
delete
答案 2 :(得分:0)
我在multichoicemodelistener中遇到了同样的问题。 我花了一些时间来多次删除listview中的文件(保存在内部存储中)
但这是我在multichoicemodelistener中删除内部存储文件的代码
public boolean onActionItemClicked(ActionMode mode, MenuItem item) {
switch (item.getItemId()) {
case R.id.list_context_delte:
nr = 0;
SparseBooleanArray sparseBooleanArray = getListView().getCheckedItemPositions();
for(int i = sparseBooleanArray.size() -1; i >= 0; i--) {
if (sparseBooleanArray.get(i)) {
RowItem selecteditem = mAdapter.getItem(sparseBooleanArray.keyAt(i));
String selecteditemString = selecteditem.getFilename().toString();
File dir = getFilesDir();
File file = new File(dir, (selecteditemString));
file.delete();
mAdapter.remove(selecteditem);
mAdapter.notifyDataSetChanged();
}
}
mode.finish();
}
return false;
}