안녕하세요 GridView를 사용하여 간단한 갤러리를 만들고 싶습니다. 대화 상자 안에 넣고 싶습니다. 나는 약간의 코드를 썼지 만 모든 것이 작동하지 않는다. 어댑터가 비어있는 오류가 발생합니다. 어떻게 생겼을 까? 내 코드는 지금과 같이 보인다 :GridView 안의 안드로이드 갤러리
GuidePhotoAlbum 코드 :
LayoutInflater inflater;
View v;
GridView gV;
public ArrayList<File> list;
public class GuidePhotoAlbum extends Activity
{
@Override public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.guide_photo_album);
list = imageReader(Environment.getExternalStorageDirectory());
}
private ArrayList<File> imageReader(File root)
{
ArrayList<File> a = new ArrayList<>();
File[] files = root.listFiles();
for(int i=0;i<files.length;i++)
{
if(files[i].isDirectory())
{
a.addAll(imageReader(files[i]));
}
else
{
if (files[i].getName().endsWith(".jpg"))
{
a.add(files[i]);
}
}
}
return a;
}
public void onClickk(View v)
{
openDialog2();
}
public void openDialog2() {
inflater = this.getLayoutInflater();
v = inflater.inflate(R.layout.dialog_choice, null);
gV = new GridView(this);
gV = (GridView)findViewById(R.id.gridView);
gV.setAdapter(new GridAdapter());
final AlertDialog.Builder builder2 = new AlertDialog.Builder(this);
builder2.setTitle("MY GALLERY");
builder2.setView(v).setPositiveButton("NEXT", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
}).setNegativeButton("BACK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
}
});
builder2.setCancelable(false);
builder2.create().show();
}
GridAdapter :
public class GridAdapter extends BaseAdapter {
GuidePhotoAlbum guidePhotoAlbum = new GuidePhotoAlbum();
@Override
public int getCount() {
return guidePhotoAlbum.list.size();
}
@Override
public Object getItem(int position) {
return guidePhotoAlbum.list.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
convertView = guidePhotoAlbum.getLayoutInflater().inflate(R.layout.my_grid,parent,false);
ImageView iv = (ImageView) convertView.findViewById(R.id.imageView);
iv.setImageURI(Uri.parse(getItem(position).toString()));
return convertView;
}
}
XML을의 dialog_choice 파일 :
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/dialog_choice"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin">
<GridView
android:id="@+id/gridView"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_margin="5dp"
android:columnWidth="100dp"
android:drawSelectorOnTop="true"
android:gravity="center"
android:numColumns="auto_fit"
android:stretchMode="columnWidth"
android:verticalSpacing="5dp"
android:focusable="true"
android:clickable="true"/>
</RelativeLayout>
XML을 my_grid :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="100dp"
android:layout_height="100dp"
android:id="@+id/imageView"/>
</LinearLayout>
,
시도의 DialogFragment –
도움이 될 것입니다 이 하나 ? –
guidePhotoAlbum.list.size()> 0. 확인하십시오. 어댑터의 getCount() 메소드에 로그를 추가하여 목록 크기를 확인하십시오. – FAT