제가 만들고자 하는 커스텀 다이얼로그는
버튼을 클릭하면 여러가지 선택할 수 있는 이미지가 있는 다이얼로그를 띄우고, 거기서 이미지를 하나 선택할 수 있게 하는 것입니다.
선택할 수 있는 이미지 목록을 그리드뷰를 이용하여 띄우려고 하는데요~
일단 다이얼로그에 띄울 커스텀 레이아웃을 (리니어)텍스트뷰+그리드뷰로 만들었구요
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/FilterDialogLayout"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:text="이름"
android:textSize="15sp"/>
<GridView
android:id="@+id/gridview"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:columnWidth="90dip"
android:numColumns="5"
android:verticalSpacing="10dp"
android:horizontalSpacing="10dp"
android:stretchMode="columnWidth"
android:gravity="center"></GridView>
</LinearLayout>
그러고 나서 버튼 리스너 이벤트 안에
showDialog(DIALOG_FILTER);
를 이용하여 다이얼로그를 띄우도록 함수호출을 했습니다. DIALOG_FILTER는 onCreateDialog 함수 안에서 띄울 다이얼로그 ID구요^^;
제가 알기로는 처음 다이얼로그를 생성할때는 onCreateDialog안에서 다이얼로그를 만들고 띄우는 걸로 알고 있어서, 저 함수 안에
protected Dialog onCreateDialog(int id)
{
switch(id)
{
case DIALOG_FILTER:
inflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
final LinearLayout linear = (LinearLayout)inflater.inflate(R.layout.filterdialog, null);
return new AlertDialog.Builder(this)
.setTitle("타이틀")
.setIcon(R.drawable.ic_launcher)
.setView(linear)
.setPositiveButton("확인", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int which) {
}
})
.setNegativeButton("취소", null)
.create();
}
return null;
}
이렇게 해서 다이얼로그를 띄우는 데는 성공했는데요. 물론 그리드뷰는 뜨지 않죠^^;;
제가 알고 싶은것은 제가 만든 그리드 뷰에 대한 속성이나 내용을 지정하고 나서 띄우는 방법 또는 순서에 대해 이해가 잘 가지 않아 이렇게 자문을 구해 봅니다.
setView를 통해 만든 xml을 넣는건 알겠지만 그 후에는 감이 잘 안잡히네요ㅠㅠ 도와주세요~
네! 그 부분에 대해서 미리 기입해 놓았지만., 그 문제 때문에 제가 질문을 올린 거였거든요^^;
물론
GridView gridView = (GridView)findViewById(R.id.gridview);
gridView.setAdapter(new ImageAdapter(getApplicationContext()));
gridView.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
}
});
이 내용을 넣어야 다이얼로그에 제대로 그리드뷰가 뜨는지 확인할텐데, 저 부분부터 어디에 넣어야 제대로 떠서 기능을 수행 할지 잘 모르겠어서요. 굉장히 초보적인 질문입니다만 부탁드립니다(__)




그리드 뷰에 내용은 안채우시나요? 아무리 봐도 그리드 뷰에 내용을 채울수 있는 어댑터를 넘겨주지 않는데요...
당연히 그리드뷰가 있어도 내용이 없으면 아무것도 안찍히는거죠....