마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

리스트뷰 컨텍스트 메뉴 중 삭제 누르면 파일삭제까지 하는방법

0 추천

ㅠㅠ 도저히 방법이 몰라 여쭈어봅니다.

 

public class MemoList extends Activity {
 private static final int EDIT_ACT = 0;
 ListView listview;
 ArrayList<String> list2, date;
 ArrayAdapter<String> adapter;
 Intent intent, intent1;
 String path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/My Memo/"; // 경로 지정
 String date1[];
 
 @Override
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.list1);
  setTitle("My Memo");
  
  ActionBar actionBar = getActionBar();
     actionBar.setBackgroundDrawable(new ColorDrawable(0xFF62a1ff));
    
    
  list2 = new ArrayList<String>();
  adapter = new ArrayAdapter<String>(this, R.layout.simple, list2);

  ReadSDCard();
  
  listview=(ListView)findViewById(R.id.list);
  listview.setOnItemClickListener(new OnItemClickListener() {
   @Override
   public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
    // TODO Auto-generated method stub
    intent = new Intent(MemoList.this, MemoRead.class);
    intent.putExtra("str", list2.get(position));
    startActivity(intent);    
   } 
  });
  
  registerForContextMenu(listview);
  
  listview.setAdapter(adapter);
  adapter.notifyDataSetChanged();
 }
 
 public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo){
  getMenuInflater().inflate(R.menu.context, menu);
 }
 
 public boolean onContextItemSelected(MenuItem item) {
  AdapterContextMenuInfo info= (AdapterContextMenuInfo)item.getMenuInfo();  
  int index= info.position;
  switch(item.getItemId()){
  case R.id.action_information:
   intent = new Intent(MemoList.this, MemoRead.class);
   intent.putExtra("str", list2.get(index));
   startActivity(intent); 
   break;
  case R.id.action_delete:
   File file = new File(path);
   Toast.makeText(this, list2.get(index) + "  삭제!!!", Toast.LENGTH_SHORT).show();
   list2.remove(index);
   file.delete();
   adapter.notifyDataSetChanged();
   break;
  case R.id.action_reply:
   break;
  }
  return true;
 }

진한색 부분에서 어떻게 해야할까요?

아니라면 다른 방법이 있나요?

 

제생각에는 파일 제목 불러서 지울려고하는데

어떻게 해야할지 감도 안잡힙니다 ㅠㅠ

도와주세요 ㅠㅠ

 

 

혹시라ㅣ도 밑 소스까지 보여줍니다.

public void ReadSDCard() { // 리스트 뷰에 파일.txt 출력
  path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/My Memo/"; // 리스트뷰에 뿌리기 위한 경로 지정
  String path1 = Environment.getExternalStorageDirectory().getAbsolutePath() + "/My Memo";// 폴더 경로 지정
 
  File temDir = new File(path1); // apk 실행 후 폴더명 없으면 새로운 My Memo로 만들어서 실행
  if(!temDir.exists()){
   temDir.mkdir();
  }  
  File file = new File(path);
  File[] files = file.listFiles();
  for(int i=0; i<files.length; i++)
  {
   list2.add(files[i].getName());
  }  
 }

성수소년 (550 포인트) 님이 2015년 10월 11일 질문

1개의 답변

0 추천

파일을 삭제하면서 리스트뷰를 갱신하려면 아래와 같이 코딩하시면 됩니다. 

string fileName = file.getName();

if(file.delete()) {

list2.remove(fileName);

adapter.notifyDataSetChanged();

// 지워짐

 

 

 

mcsong (44,040 포인트) 님이 2015년 10월 14일 답변
...