리스트뷰의 한 항목안에

TextView와 EditText가 동시에 들어가는 그런... 리스트뷰를 만들었는데


내용물을 수정하고 수정된 값을 받아와야 하는데 EditText의 객체를 어떻게 받아와야할지 모르곘습니다 ㅠㅠ


public class SubActivity extends Activity

{

AndroidViewerActivity s;

ArrayList<ListItem> arItem;


private String m_ServerDomain;

private int m_Port = 0;

private String m_ID;

private String m_Password;

private String m_ServName;

Button btnOk, btnCancel;

TextView Add, Edit;

ListView MyList;

MultiAdapter mAdapter;


EditText editDomain, editPort, editID, editPass, editName;


public void onCreate(Bundle savedInstanceState)

{

super.onCreate(savedInstanceState);

setContentView(R.layout.editpage);


Intent intent = getIntent();


if (intent.hasExtra(AndroidViewerActivity.PREF_KEY_SERVERNAME))

{

m_ServName = intent.getStringExtra(AndroidViewerActivity.PREF_KEY_SERVERNAME);

m_ServerDomain = intent.getStringExtra(AndroidViewerActivity.PREF_KEY_DOMAIN);

m_Port = Integer.parseInt(intent.getStringExtra(AndroidViewerActivity.PREF_KEY_PORT));

m_ID = intent.getStringExtra(AndroidViewerActivity.PREF_KEY_ID);

m_Password = intent.getStringExtra(AndroidViewerActivity.PREF_KEY_PASSWORD);

}

btnOk = (Button) findViewById(R.id.sub_btnOk);

btnCancel = (Button) findViewById(R.id.sub_btnCancel);

arItem = new ArrayList<ListItem>();

if(m_Port == 0)

{

arItem.add(new ListItem("ServerName", ""));

arItem.add(new ListItem("Domain", ""));

arItem.add(new ListItem("Port", ""));

arItem.add(new ListItem("Id", ""));

arItem.add(new ListItem("Password", ""));

}

else

{

arItem.add(new ListItem("Servername", m_ServName));

arItem.add(new ListItem("Domain", m_ServerDomain));

arItem.add(new ListItem("Port", Integer.toString(m_Port)));

arItem.add(new ListItem("ID", m_ID));

arItem.add(new ListItem("Password", m_Password));

}

mAdapter = new MultiAdapter(this, arItem);

MyList = (ListView) findViewById(R.id.editList);

MyList.setAdapter(mAdapter);

Add = (TextView) findViewById(R.id.textAddServer);

Edit = (TextView) findViewById(R.id.textEditServer);

if(intent.getFlags() == AndroidViewerActivity.FLAG_ADD)

Edit.setVisibility(View.INVISIBLE);

else

Add.setVisibility(View.INVISIBLE);

//

// editName = (EditText) findViewById(R.id.sub_editName);

// editDomain = (EditText) findViewById(R.id.sub_editDomain);

// editPort = (EditText) findViewById(R.id.sub_editPort);

// editID = (EditText) findViewById(R.id.sub_editID);

// editPass = (EditText) findViewById(R.id.sub_editPass);

//

// if (m_Port != 0)

// {

// editName.setText(m_ServName);

// editDomain.setText(m_ServerDomain);

// editPort.setText(Integer.toString(m_Port));

// editID.setText(m_ID);

// editPass.setText(m_Password);

// }

//

btnOk.setOnClickListener(sub_ClickListener);

btnCancel.setOnClickListener(sub_ClickListener);

}


OnClickListener sub_ClickListener = new OnClickListener() {


public void onClick(View v)

{

switch (v.getId())

{

case R.id.sub_btnOk:

try {

m_ServName = 

m_ServerDomain = arItem.get(1).EditText;

m_Port = Integer.parseInt(arItem.get(2).EditText);

m_ID = arItem.get(3).EditText;

m_Password = arItem.get(4).EditText;

} catch(Exception e) {

AlertDialog.Builder bld = new AlertDialog.Builder(

SubActivity.this);

bld.setTitle("               Error");

bld.setMessage("Port엔 숫자만 들어갑니다.");

bld.setPositiveButton("닫기", null);

bld.show();

break;

}

if(m_ServName == null || m_ServerDomain == null || m_ID == null || m_Password == null)

{

AlertDialog.Builder bld = new AlertDialog.Builder(

SubActivity.this);

bld.setTitle("               Error");

bld.setMessage("빈칸을 모두 채워주세요.");

bld.setPositiveButton("닫기", null);

bld.show();

break;

}

Intent intent = new Intent();

intent.putExtra("Out_ServName", m_ServName);

intent.putExtra("Out_Domain", m_ServerDomain);

intent.putExtra("Out_Port", Integer.toString(m_Port));

intent.putExtra("Out_ID", m_ID);

intent.putExtra("Out_Password", m_Password);

setResult(RESULT_OK, intent);

finish();

break;

case R.id.sub_btnCancel:

setResult(RESULT_CANCELED);

finish();

break;

}

}

};

public class ListItem

{

String Text;

String EditText;

public TextView txt;

public EditText edt;

ListItem(String aText, String aEditText)

{

Text = aText;

EditText = aEditText;

}

}

public class MultiAdapter extends BaseAdapter

{

LayoutInflater mInflater;

ArrayList<ListItem> arSrc;

EditText edt;

TextView txt;

public MultiAdapter(Context context, ArrayList<ListItem> arItem)

{

mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

arSrc = arItem;

}


public int getCount()

{

return arSrc.size();

}


public Object getItem(int position)

{

arSrc.get(position);

return null;

}


public long getItemId(int position)

{

return position;

}

public void getText(int position)

{

}


public View getView(int position, View convertView, ViewGroup parent)

{

if(convertView == null)

{

int res = R.layout.addserver;

convertView = mInflater.inflate(res, parent, false);

}

txt = (TextView)convertView.findViewById(R.id.text);

txt.setText(arSrc.get(position).Text);

edt = (EditText)convertView.findViewById(R.id.edit);

edt.setText(arSrc.get(position).EditText);

return convertView;

}

}

}


굵은 글씨로 되있는 부분에서 값을 받아와서 저장해야 하는데.. 일반 View처럼 position으로 바로 받아올 수 있는 것도 아니고..


이거저거 해봤는데 되는게 없네요...


도움 주시면 감사하겠습니다.