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

갤러리 어플리케이션 같은 기능을 구현하고 있는데요 [closed]

0 추천

안녕하세요

지금 기본 갤러리 처럼 폴더 형식으로 사진들을 보여주고

폴더를 클릭하면 다시 안에 있는 사진들을 보여주는 식으로 구성하고 있습니다.

사진들은 웹 서버에 저장되어 있고요...

사진을 주소로 해서 띄우는 것 까지는 처리했습니다만...

폴더를 클릭해서 인텐트로 폴더 내부를 띄울려고 할 때

Adapter의 생성자까지만 호출되고 getView가 호출되지 않는 현상이 일어납니다.

소스코드 첨부하겠습니다.

        GridView gv = (GridView) findViewById(R.id.TitleGridView);
        gv.setAdapter(new CustomAdapter(this, R.layout.xml_grid_child, title_result, inner_result));
        gv.setOnItemClickListener(new OnItemClickListener() {
			public void onItemClick(AdapterView<?> adapter, View v, int position, long id) {
				Intent it = new Intent(Photo_Activity.this, Photo2_Activity.class);
				it.putExtra("address", inner_result.get(position));
				startActivity(it);
			}
		});

이 코드에서 처럼 CustomAdapter를 구현해서 그리드뷰와 연결을 시켰습니다.

이 엑티비티에서 사용한 layout은 xml_photo_view라는 단순한 그리드뷰고요

그리고 커스텀 어뎁터 안에는 아래와 같이 두개의 생성자가 존재하고요

       public CustomAdapter(Context context, int textViewResourceId, ArrayList<String> titleList, ArrayList<String> innerList) {
                super(context, textViewResourceId, titleList);
		...
	}
	
	public CustomAdapter(Context context, int textViewResourceId, String address) {
                super(context, textViewResourceId, address);
		...
	}
	
	@Override
	public View getView(int position, View convertView, ViewGroup parent) {
                ...
 }

요런 식으로 되어 있습니다.

마지막으로 인텐드로 넘겨받는 엑티비티에서

public class Photo2_Activity extends Activity {
	String address;
	@Override
	public void onCreate(Bundle savedInstance) {
		super.onCreate(savedInstance);
		setContentView(R.layout.xml_photo_view);
		
		Intent it = getIntent();
		address = it.getExtras().getString("address").toString();
		
		GridView gv = (GridView) findViewById(R.id.TitleGridView);
        gv.setAdapter(new CustomAdapter(this, R.layout.xml_grid_child, address));
	}
}

이렇게 어뎁터를 설정해줬는데 getView가 Photo2_Activity에서만 호출이 되지 않습니다.

뭐가 문제고 어떻게 해결하는 것이 좋을까요?

질문을 종료한 이유: 해결됨
익명사용자 님이 2013년 7월 3일 질문
2013년 7월 3일 closed
방금 강제로 notify 시켰더니 이런 에러가 뜨네요
07-03 00:06:49.772: E/AndroidRuntime(20149): java.lang.RuntimeException: Unable to start activity ComponentInfo{guri.youth/guri.youth.Photo2_Activity}: java.lang.IllegalMonitorStateException: object not locked by thread before notify()

1개의 답변

0 추천
자답입니다.

어뎁터 내부에서 getCount를 오버라이드로 정의해서 크기를 넘겨줬더니 해결됬네요... ㅎ
익명사용자 님이 2013년 7월 3일 답변
...