리스트뷰의 한 항목안에
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으로 바로 받아올 수 있는 것도 아니고..
이거저거 해봤는데 되는게 없네요...
도움 주시면 감사하겠습니다.