ListView의 데이터를 롱클릭하면 contextmenu가 뜨고 거기서 메뉴항목을 누르면 EditText 를 띄워서 ListView의 내용을 수정하게끔 하고 싶은데요...

ListView의 데이터를 롱클릭했을때 contextmenu를 띄우는데 까지는 했는데...

contextmenu의 항목을 클릭했을때 edittext를 띄우는건 어케해야 될지 감이 잘 안잡힙니다...

아무래도 뻘짓하고 있는것 같은데...

아래의 소스에서 굵게 표시된 부분이거든요...

contextmenu에는 A메뉴|B메뉴|C메뉴|D메뉴 가 있고.. B메뉴를 눌렀을때 edittext를 띄우고 싶거든요....

아래좀 봐주시고 힌트를 좀 주시면 감사하겠습니다.

그럼 수고하세요.... ^^


import java.io.File;
import java.io.FilenameFilter;
import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Context;
import android.database.Cursor;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.ContextMenu;
import android.view.LayoutInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.AdapterContextMenuInfo;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.AdapterView.OnItemLongClickListener;
import android.widget.ArrayAdapter;
import android.widget.CheckBox;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class MenuPlayList extends ListActivity {

 private ListView addlist;
 private CheckBox cb;
 private ArrayList<Music> addsong = new ArrayList<Music>();
 int MAX = 1000;
 DateNow dn = new DateNow();
 
 String dbTitle;
 int dbPlayTiime,dbOrd,dbIdx,dbRepeat,dbChk;
 
 @Override
 public void onCreate(Bundle savedInstanceState)
 {
  super.onCreate(savedInstanceState);
  addlist = getListView();
  loadPlayListDB();
 }
 
    public void onCreateContextMenu (ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)
    {
     super.onCreateContextMenu(menu, v, menuInfo);

     AdapterContextMenuInfo menuInfo2 = (AdapterContextMenuInfo) menuInfo;
     TextView textView = (TextView)(menuInfo2.targetView).findViewById(R.id.song_item_layout);
     String mTitle=null;
     mTitle = textView.getText().toString();
     
  menu.setHeaderTitle("'"+mTitle+"' 관리");
  menu.add(0,11,0,"A메뉴").setIcon(R.drawable.icon);
  menu.add(0,22,0,"B메뉴").setIcon(R.drawable.icon);
  menu.add(0,33,0,"C메뉴").setIcon(R.drawable.icon);
  menu.add(0,44,0,"D메뉴").setIcon(R.drawable.icon);
    }
   
    public boolean onContextItemSelected (MenuItem item)
    {
     AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
     TextView tvTitle = (TextView)(menuInfo.targetView).findViewById(R.id.song_item_layout);  
     final TextView tvRepeat = (TextView)(menuInfo.targetView).findViewById(R.id.song_repeat);  
     TextView tvIdx = (TextView)(menuInfo.targetView).findViewById(R.id.song_idx);   
     TextView tvOrd = (TextView)(menuInfo.targetView).findViewById(R.id.song_ord);  
     
     String mTvTitle=null;
     String mTvRepeat=null;
     String mTvIdx=null;
     String mTvOrd=null;
     
  mTvTitle = tvTitle.getText().toString();
  mTvRepeat = tvRepeat.getText().toString();
  mTvIdx = tvIdx.getText().toString();
  mTvOrd = tvOrd.getText().toString();
     
     switch (item.getItemId())
     {
      case 11:  //A메뉴
       Toast.makeText(this,"재생순서변경",Toast.LENGTH_SHORT).show();
       return true;
      case 22:  //B메뉴
       Toast.makeText(this,"반복회수변경",Toast.LENGTH_SHORT).show();
       Log.v(LanguageRecorder.TAG,"onItemClick 111 !!!");
       
       final EditText et = new EditText(this);  //사용자입력값을받기위해 Edittext를 생성한다.
       String str = et.getText().toString();
       et.setText(str);
       addlist.setOnItemClickListener(new OnItemClickListener()
       {

     @Override
     public void onItemClick(AdapterView<?> arg0, View arg1,
       int arg2, long arg3) {
      // TODO Auto-generated method stub
      tvRepeat.setText("TEST!!!");
      Log.v(LanguageRecorder.TAG,"onItemClick 222 !!!");
     }
    });

       return true;
      case 33:  //C메뉴
       Toast.makeText(this,"파일명변경",Toast.LENGTH_SHORT).show();
       return true;
      case 44:  //D메뉴
       Toast.makeText(this,"파일삭제",Toast.LENGTH_SHORT).show();
       return true;
     }
     return true;
    }

 private void loadPlayListDB()
 {
  System.gc();
  Music[] music = new Music[MAX];
  int cnt = 0;
  
     String sql="";
     sql = sql + "SELECT * FROM tbl_playlist WHERE FILENAME LIKE '%.3gp'";
  
     Cursor cur = LanguageRecorder.db.rawQuery(sql, null);

  if (cur.moveToFirst())
  {
   do{
    dbIdx =cur.getInt(cur.getColumnIndex("IDX"));
    dbTitle = cur.getString(cur.getColumnIndex("FILENAME")).replace(LanguageRecorder.recordingFileType,"");
    dbPlayTiime = cur.getInt(cur.getColumnIndex("PLAYTIME"));
    dbRepeat = cur.getInt(cur.getColumnIndex("REPEAT"));
    dbOrd = cur.getInt(cur.getColumnIndex("ORD"));
    dbChk = cur.getInt(cur.getColumnIndex("CHK"));

    music[cnt] = new Music(dbIdx,dbTitle,dbPlayTiime,dbRepeat,dbOrd,dbChk);
    addsong.add(music[cnt]);
    cnt ++;
   }while(cur.moveToNext());
  }
  Musicinfo songlist = new Musicinfo(this, R.layout.playlist02, addsong);
  setListAdapter(songlist);
  addlist.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
  
  addlist.setOnItemLongClickListener(new OnItemLongClickListener()
  {
   @Override
   public boolean onItemLongClick(AdapterView<?> parent, View view,int position, long id) {
    //addlist에 대해 Context Menu를 사용하겠다는것을 등록한다.
    registerForContextMenu(addlist);
    return false;
   }
  });
 }

 private class Musicinfo extends ArrayAdapter<Music>
 {
  private ArrayList<Music> items;
  public Musicinfo (Context context, int textViewId, ArrayList<Music> items)
  {
   super(context, textViewId, items);
   this.items = items;
  }
  @Override
  public View getView(int position, View view, ViewGroup parent)
  {
   View v = view;
   if(v == null)
   {
    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    v = vi.inflate(R.layout.playlist02, null);
   }
   Music m = items.get(position);
   if(m != null)
   {
    cb = (CheckBox)v.findViewById(R.id.check);    //체크된 값도 디비로 관리해야긋네...
    TextView tv = (TextView)v.findViewById(R.id.song_item_layout);
    TextView songPlayTime = (TextView)v.findViewById(R.id.song_playtime);
    TextView songRepeat = (TextView)v.findViewById(R.id.song_repeat);
    TextView songIdx = (TextView)v.findViewById(R.id.song_idx);
    TextView songOrd = (TextView)v.findViewById(R.id.song_ord);
    
    if(m.getChk()==1)
    {
     cb.setChecked(true);  //1이면 true, 0이면 false
    }
    
    tv.setText(m.getTitle());
    songIdx.setText(""+m.getIdx());
    songPlayTime.setText(dn.getFormattedTime(m.getPlayTime()));
    songRepeat.setText(m.getRepeat()+"회");
    songOrd.setText(""+m.getOrd());
   }
   return v;
  }
 }
}

class Music
{
 private int Idx;
 private String Title;
 private int PlayTime;
 private int Repeat;
 private int Ord;
 private int Chk;
 private String[] paramTitle;
 
 //public Music(String _title)
 public Music(int dbIdx, String _title, int dbPlayTiime, int dbRepeat, int dbOrd, int dbChk)
 {
  this.Idx = dbIdx;
  this.Title = _title;
  this.PlayTime = dbPlayTiime;
  this.Repeat = dbRepeat;
  this.Ord = dbOrd;
  this.Chk = dbChk;
 }

 public int getIdx()
 {
  return Idx;
 }
 
 public String getTitle()
 {
  return Title;
 }
 
 public int getPlayTime()
 {
  return PlayTime;
 }
 
 public int getRepeat()
 {
  return Repeat;
 }
 
 public int getOrd()
 {
  return Ord;
 }
 
 public int getChk()
 {
  return Chk;
 }
}