마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

android adapter.notifyItemRemoved(position); 이부분이 에러나는 이유가 뭘까요?

0 추천
안녕하세요. 리스트 롱클릭시 삭제 구현하려는데 에러가 납니다. 왜그런가요?
adapter.notifyItemRemoved(position);
adapter.notifyDataSetChanged(); // 둘다 에러남
ListAdapter adapter;

   ListAdapter adapter = new SimpleAdapter(
                    DeviceActivity.this, mArrayList, R.layout.device_list,
                    new String[]{TAG_HwID, TAG_Authcode, TAG_Part},
                    new int[]{R.id.hwid, R.id.authcode, R.id.part}
            );
            //R.id.CO, R.id.VOC,
            device.setAdapter(adapter);
            device.setItemChecked(0, true);

            device.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                @Override
                public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                    selected_Device = String.valueOf(mArrayList.get(position));
                    Log.i("selected_Device : ", String.valueOf(selected_Device));
                    vo = (Object) parent.getAdapter().getItem(position);
                }

            });
            device.setOnItemLongClickListener(new AdapterView.OnItemLongClickListener() {
                @Override
                public boolean onItemLongClick(AdapterView<?> parent, View view,
                                               int position, long id) {
                    // TODO Auto-generated method stub

                    mArrayList.remove(position);
                   adapter.notifyItemRemoved(position); // 에러부분
 
익명사용자 님이 2018년 8월 27일 질문
무슨 에러인지를 올려주시는게 답변 받기가 더 쉽지 않을까 싶습니다.
네 에러는 해당 메소드가 없다고 합니다
error: cannot find symbol method notifyDataSetChanged()

2개의 답변

0 추천
notifyItemRemoved 는 RecyclerView.Adapter 에 있는 메소드인데,

SimpleAdapter 가 RecyclerView.Adapter 를 상속 받아 구현된게 아닌 것으로 생각됩니다.

SimpleAdapter가 RecyclerView.Adapter 를 상속받게 수정 해 보세요.
익명사용자 님이 2018년 8월 27일 답변
0 추천

notifyDatasetChanged()는 ListAdapter의 메소드가 아닙니다.

BaseAdapter메소드고 ListAdapter는 그 서브클래스입니다.

아래 처럼 써보시거나 ArrayAdapter를 사용하세요.

((BaseAdapter)adapter).notifyDataSetChanged();
원펀치맨 (2,860 포인트) 님이 2018년 8월 27일 답변
...