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

adapter.notifyDataSetChanged();의 위치.. [closed]

+1 추천

 

위와 같은 식으로.. DB에 있는 회원정보를 리스트뷰로 띄우고, 알맞게 수정하는 것을 만들고 있습니다.

최종적으론 체크박스를 사용해서 체크한 회원만 수정되도록 해야하지만, 일단 update부터 하고있습니다.

update문으로 회원의 나이를 23세에서 24세로 바꾸는건 했는데, 다이얼로그에서 확인을 누르고 나서 다이얼로그가 사라지고, 다시 리스트뷰가 보일 때 동적으로 변경된 나이값이 보이지 않습니다. 

나이 수정하고 다이얼로그 확인 누르면 일단 값은 바뀌는게 맞는데, 리스트뷰에 보이지 않는 다는 것이죠..

class B에서 뒤로가기 버튼을 눌러서 class A로 간다음 다시 버튼을 눌러서 classB로 들어가면 나이값이 바뀌어 보이기는 합니다..db값이 변경되었으니 listview도 다시 띄워주는 거겠죠.

dialog.setButton("확인", new DialogInterface.OnClickListener() 
{
  @Override
  public void onClick(DialogInterface dialog, int which) 
  {
    editAge = (EditText)layout.findViewById(R.id.editAge);//나이변경
    String age;
    age = editAge.getText().toString(); //새로 입력되는 나이값을 받는다
    update_info(age); //함수로이동
    adapter.notifyDataSetChanged();//변경된 데이터 확인 후, 화면 갱신	
 
    }
					
    }); 
.
.

-----------------------------------------------
update_info 함수

public void update_info(String age)
{
		listdb = SQLiteDatabase.openDatabase(DB_PATH, null,
                SQLiteDatabase.OPEN_READWRITE | SQLiteDatabase.NO_LOCALIZED_COLLATORS);
		
	
		String sql = "update info set age='" + age
                + "' where id=" + id + ";";

		listdb.execSQL(sql);
		listdb.close();
		listdb = null;
	}
	

 

이런식으로 구현했습니다..

 

 

질문을 종료한 이유: 자답입니다.
anci (19,950 포인트) 님이 2014년 3월 7일 질문
anci님이 2014년 3월 7일 closed
정확한 방식인지는 모르겠지만..동적으로 보여주기 위해,
기존의 arraylist를 초기화 해준 후, 다시 띄웠습니다.
update_info로 나이를 변경 한 후, 다이얼로그에서 확인을 누르는 코드 안에서 arrList.clear(); 한 후, 다시 arrList.add();하는 방식으로 했네요..
...