안드로이드 개발 질문/답변
(글 수 40,700)
SQLIte와 ListAdapter를 사용해서 프로그램 연습중입니다
제가 할려는 것은
홍어 3000 [DeleteButton]
바나나 2000 [DeleteButton]
SQLite, 리스트와 adapter를 짜서 이렇게 화면 까지는 만들었습니다.
즉, SQLite로 삽입을 하면은 목록이
name price [DeleteButton]
이렇게 나옵니다.
그런데 문제는 저 DeleteButton(홍어 3000을Delete하는 버튼)을 어떻게 처리해야 할지를 모르겠네요 ㅠㅠ
adapter는 이렇습니다.
adapter = new SimpleAdapter(activity, list1, R.layout.song,
new String[]{"NAME","PRICE"} ,
new int[]{R.id.name1 , R.id.price1}
);
클릭 매소드
private View.OnClickListener delete = new OnClickListener() {
public void onClick(View v) {
TextView name1 = (TextView)findViewById(R.id.name1);
TextView price1 = (TextView)findViewById(R.id.price1);
Log.i("logsay", "OK delete");
_db.delete(name1.getText().toString(), price1.getText().toString());
text.setAdapter(_db.adapter);
}
};
_db.delete의 쿼리문 name1과 price1이 파라매터로 들어갑니다.
db.execSQL("DROP FROM HOME WHERE NAME = '"+name+"',PRICE = '"+price+"')");
그런데 중요한것은 클릭 메소드에 있는 Log.i가 뜨지를 않습니다.
button.setOnClickListener(delete)를 하면은 흔히들 말하는 포스에러로 인해
강제로 종류가 됩니다.
button.setOnClickListener(delete) 이것을 주석처리를 하면은 포스에러로 강제로 종류는 막아 집니다.
즉 저기 메소드 부분이 잘못 된것 입니다.
그리고 로직도 분명히 잘못된것 같아요ㅠㅠ
도저히 이부분은 어떻게 해야 할지 감이 안잡히네요
고수님들 도와주세요!ㅠ
잘못된 로직을 바로 잡아주세요 ㅠㅠ
2010.05.25 02:12:36
일단.. ListVIew 가 setOnClickListener 를 쓸 수 있는지 부터 확인하시구요.. 지금 이클립스 킬 환경이 안되어서 모르겠지만
제 기억에 ListView 는 OnClickListener 를 쓸 수 없는 걸로 기억합니다.
아마 OnItemClickListener 라는게 있을거구요 setOnItemClickListener 로 연결하여 주면 될듯 싶습니다.
OnItemClickListener class 를 연결하시면 onItemClick method 를 만드시게 될거고
거기 argument 중에 int position 이 있는데 그게 list 에서 click 된 item 의 순서입니다.
위의 예 같으면 홍어의 delete 를 누르시면 position 은 0, 바나나 는 1이 되겠네요.