2012-02-18 74 views
2

大家好,大家好,我創建了一個類,用於保存內部存儲器中的文件並將其顯示在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); 
    } 

回答

1

你或許應該創建並註冊(registerForContextMenu(MyListView))在你爲你的ListView活動的ContextMenu和執行刪除那裏。

@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

可以由內部使用getFilesDir().listFiles()刪除文件,這將返回數組文件夾中存在的文件。

File[] files = getFilesDir().listFiles(); 

for (File file : files) { 
    file.delete(); 
} 

如果你想刪除一個particular文件,你可以得到的filecomparedeletename

if(file.getName().equals("xyz.extension")) 
    file.delete(); 
0

我在我的multichoicemodelistener中遇到過同樣的問題。 我花了一段時間來多刪除我的列表視圖我的文件(保存在內部存儲)

但這裏是我在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; 

    } 
相關問題