안드로이드 개발 질문/답변
(글 수 45,052)
제가 커스텀 어댑터를 가지고 리스트 뷰를 만들었는데
리스트 뷰의 아이템은 텍스트뷰 하나와 에디트 뷰 하나로 이루어져있습니다.
문제는 리스트 뷰에있는 에디트 텍스트의 내용을 어떻게 가져오느냐 하는 겁니다 ㅜㅜ
가장 밑에 보시면 메인부분의 insertDB() 메소드에서 값을 가져와 DB에 넣어야 하는데
그 방법을 몰라 5시간이 넘도록 헤매고 있습니다. ㅜㅜ
혹시라도 아시는 분 부탁드립니다. ㅜㅜ
제가 만든 어댑터 -----------------------------------------------
public class MultiListAdapter extends BaseAdapter{
LayoutInflater inflater;
ArrayList<ListItem> item;
public MultiListAdapter(Context context, ArrayList<ListItem> item) {
inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
this.item = item;
}
@Override
public int getCount() {
return item.size();
}
@Override
public ListItem getItem(int position) {
return item.get(position);
}
public int getEditText(View convertView, int positon, ViewGroup listView){
if(convertView == null){
convertView = inflater.inflate(R.layout.insert_list_item,listView, false);
}
return R.id.info_input_et0;
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup listView) {
if(convertView == null){
convertView = inflater.inflate(R.layout.insert_list_item,listView, false);
}
TextView tv = (TextView)convertView.findViewById(R.id.info_txt);
tv.setText(item.get(position).infoText);
return convertView;
}
}
class ListItem{
String infoText;
ListItem(String infoText){
this.infoText = infoText;
}
}
----------------------------------------------------------------------------------------
xml파일- 리스트 뷰가 되는 부분----------------------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="wrap_content"
android:layout_height="wrap_content">
<ListView android:id="@+id/listView" android:layout_width="wrap_content"
android:layout_height="wrap_content"></ListView>
</LinearLayout>
---------------------------------------------------------------------------------------
xml파일- 리스트 뷰의 아이템이 되는 부분------------------------------
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView android:id="@+id/info_txt" android:layout_width="fill_parent"
android:layout_height="wrap_content"></TextView>
<EditText android:id="@+id/info_input_et0"
android:layout_width="fill_parent" android:layout_height="wrap_content"></EditText>
</LinearLayout>
--------------------------------------------------------------------------------------
메인 부분------------------------------------------------------------------------
public class InsertActivity extends Activity implements OnClickListener{
MultiListAdapter adapter;
ArrayList<ListItem> info;
DBHelper dbhelper;
SQLiteDatabase db;
ListView lv;
/*
int[] EDITTEXTS={
adapter.getItem(0).inputEditText, adapter.getItem(1).inputEditText,
adapter.getItem(2).inputEditText, adapter.getItem(3).inputEditText};
*/
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.insert_list_view);
info = new ArrayList<ListItem>();
info.add(new ListItem("일자"));
info.add(new ListItem("시간"));
info.add(new ListItem("장소"));
info.add(new ListItem("내용"));
adapter = new MultiListAdapter(this, info);
lv = (ListView)findViewById(R.id.insert_list_view);
lv.setAdapter(adapter);
View v = adapter.getView(0, null, lv);
dbhelper = new DBHelper(this,1);
((Button)findViewById(R.id.cancle_btn)).setOnClickListener(this);
((Button)findViewById(R.id.add_btn)).setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.add_btn:
insertDB();
finish();
case R.id.cancle_btn:
finish();
}
}
private String getStringEditText(int id){
return ((EditText)findViewById(id)).getText().toString().trim();
}
private void insertDB() {
db = dbhelper.getWritableDatabase();
ContentValues cv = new ContentValues();
Log.i(">>>>>>>>>>>>>>",""+ getEditText(null,0,lv).getText().toString());
cv.put("date", getEditText(null,0,lv).getText().toString());
cv.put("time", getEditText(null,0,lv).getText().toString());
cv.put("place", getEditText(null,0,lv).getText().toString());
db.insert("diary", null, cv);
dbhelper.close();
}
}



