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

JSON 파싱으로 만든 커스텀 리스트뷰 항목 클릭 시 아이템 변경에 대하여

0 추천

DB에 있는 항목들(이름,가격)을 JSON을 이용하여 파싱해서 안드로이드로 불러왔습니다.

그래서 커스텀 리스트뷰로 불러온 항목들을 보여줬습니다. 리스트뷰에는 3가지 항목을 보여주는데 이름,가격 외에도 수량이라는 항목을 보여줍니다. 수량은 리스트뷰가 추가되면 자동으로 1로 리셋되서 이름,가격과 함께 추가됩니다. 그 후 리스트뷰 한줄을 클릭했을때 해당 클릭한 줄에 대해 수량을 변경하기위해 EditText가 들어있는 커스텀 다이얼로그를 띄웠습니다.

그러나 바꿀 전화번호를 입력하고 확인을 누르면 어플이 종료되 는 오류가 발생합니다.

 

어떻게 오류를 바로잡아야할까요?

 

위 사진은 메인액티비티로써 리스트뷰를 클릭 시 커스텀다이얼로그를 실행합니다.

 

 

위 사진은 커스텀다이얼로그 클래스입니다. etNumber 라는 에디트텍스트에 입력된 스트링값을 NoticeTextView 클래스 setNumber함수의 매개변수로 넘겨줍니다.

 

 

위 사진은 리스트 뷰에 나타낼 TextView에 대한 정의가 있는 클래스입니다. 커스텀다이얼로그의 에디트텍스트에 입력된 값을 전달받아 setText합니다.

 

아래는 어플 실행화면입니다.

이러한 과정에서 널포인트 오류가 나서 질문드립니다..

징구야널자 (180 포인트) 님이 2015년 4월 5일 질문

1개의 답변

+1 추천
 
채택된 답변
NoticeTextView 클래스 setNumber 가 static로 선언되어있어서 바로 접근이 가능하지만

setNumber 안에서 접근하는 mText02 가 생성되지않은 상태에서 접근해서 null 이 뜨는 것으로 보여집니다.

구조상 setNumber 메소드를 static 하시면 안될것 같고

NoticeTextView 클래스를 new 로 객체화시킨후에 setNumber 메소드를 콜해야할듯 보여지네요
nicehee (73,100 포인트) 님이 2015년 4월 5일 답변
징구야널자님이 2015년 4월 6일 채택됨
좋은답변감사합니다! NoticeTextView 클래스에서  디폴트생성자 메소드를 만들고 그 안에 mText02=(TextView)findViewById(R.id.dataTitle)로 초기화했습니다.그런데 There is no default constructor available in 'android.widet.LinearLayout' 이라는 오류가 뜹니다... 왜이러는걸까요?
NoticeTextView 클래스를 new로 객체화시키려면 생성자가 꼭 필요해서요.. 이미 다른 매개변수가 있는 생성자가 존재해서 명시적으로 디폴트생성자를 정의하려고하는데 위같은 오류가 뜨네요..
...