Activity에서
DataControl dc = new DataControl(this, true); // 내부 데이터베이스 작업을 하는 객체입니다.
ArrayList<Spot> spotList = dc.getAllSpot(); // 원하는 정보를 가져와서 ArrayList로 저장하였습니다.
lv.setAdapter(new FavoritesAdapter(this, R.layout.planspots, spotList)); // 그래서 Adapter로 리스트를 넘겼어요. lv는 ListView입니다.
이렇게 되었구요 , Adapter에서는 이런 식으로 넘긴 Spot리스트 (items)에서 spot을 하나하나 뽑아서 관련된 작업 하구있습니다.
final Spot spot = items.get(position);
TextView favoritesText = (TextView)v.findViewById(R.id.favoritesText);
if(favoritesText != null) {
favoritesText.setText(spot.name);
}
그런데 컨텍스트 메뉴를 사용해서 추가 / 삭제를 선택하면 해당 Spot에 대한 데이터 작업을 해야하거든요 .
리스트 뷰에 컨텍스트 메뉴를 해놨는데 , 이렇게 하면 Adapter안에 있는 Spot을 어떻게 가져오는지 모르겠어서요 ㅜㅜ
어떻게 하면 해결 가능할지 알려주세요 ㅜㅜ 개발자님들 , 부탁드립니다 !!
@Override
public boolean onContextItemSelected(MenuItem item) {
// TODO Auto-generated method stub
switch(item.getItemId()) {
case 1:
// spot을 일정에 추가 , 이부분에서 Adapter 안의 Spot이 뭔지를 알아내서 데이터 작업을 해야하는데 어떻게 알아낼 수 있는지 모르겠어요 !
return true;
case 2:
// spot을 디비에서 삭제
return true;
}
//return super.onContextItemSelected(item);
return true;
}
@Override
public void onCreateContextMenu(ContextMenu menu, View v,
ContextMenuInfo menuInfo) {
// TODO Auto-generated method stub
super.onCreateContextMenu(menu, v, menuInfo);
if(v == lv) {
menu.setHeaderTitle("여행바구니 관리");
menu.add(0,1,0,"일정에 추가");
menu.add(0,2,0,"목록에서 삭제");
}
}
@Override
public boolean onContextItemSelected(MenuItem item) {
AdapterContextMenuInfo menuInfo = (AdapterContextMenuInfo) item.getMenuInfo();
Spot data = mAdapter.getItem(menuInfo.position);
.....
Adapter를 멤버변수로 빼서 사용하시면 될듯요..