Android 拍照后更新GridView

Android 拍照后更新GridView,android,gridview,android-gridview,Android,Gridview,Android Gridview,我对这个android编程还不熟悉,但我一直在上下寻找适合这个的anwser 该应用程序先拍摄一张照片,然后在gridView中呈现给用户,但问题是,在您关闭应用程序并转到手机内置的多媒体资料查看照片之前,它不会显示照片,当您再次进入该应用程序时,它会再次显示所有正常内容 代码如下: xml文件: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http:

我对这个android编程还不熟悉,但我一直在上下寻找适合这个的anwser

该应用程序先拍摄一张照片,然后在gridView中呈现给用户,但问题是,在您关闭应用程序并转到手机内置的多媒体资料查看照片之前,它不会显示照片,当您再次进入该应用程序时,它会再次显示所有正常内容

代码如下:

xml文件:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    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"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/camera"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="36dp"
        android:text="@string/cheese" />

    <GridView
        android:id="@+id/gridView1"
        android:layout_width="200dp"
        android:layout_height="200dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:numColumns="3" >
    </GridView>

</RelativeLayout>
任何帮助都将不胜感激,并提前感谢您抽出时间

String[] projection = {MediaStore.Images.Thumbnails._ID}; 

cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, // Which columns to return null, // Return all rows null, MediaStore.Images.Thumbnails.IMAGE_ID);


columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID); 

sdcardImages = (GridView) findViewById(R.id.gridView1); sdcardImages.setAdapter(new ImageAdapter(this));
将上述代码放入一个方法中并调用它两次。一旦进入onCreate,然后在拍摄完照片后,您不应该在从拍摄照片返回后立即调用刷新。您需要实现onActivityResult方法,然后从那里进行刷新。通过执行startActivityForResult,您已经在做正确的事情

还有一件事。您可能根本不需要调用refresh。您只需在适配器上执行notifyDataSetChanged,这也应该可以工作


祝你好运。

将setContentView下面的所有代码放在TakePhoto方法中。就在StartActivityForresults的下面,但这会在一开始就启动相机,我不希望这样。我希望用户看到gridview中有哪些图片,单击按钮拍照,当相机关闭并返回应用程序时,在gridview中显示新拍摄的图片,后者不会发生。它可以很好地拍摄图片,并将其存储在以下目录中:mnt/sdcard/DCIM/100ANDRO/但是当我想查看新图片时,它在退出应用程序之前不会显示,请转到内置图库,返回应用程序,然后它就出现了。我不知道为什么会发生这样的事,但它是按照我说的方式工作的吗?我为你找到了另一条路。保留您的代码,而不是sdcardImages.invalidateViews使用sdcardImages.notifyDataSetChangeduser3033613:不,相机启动了,我拍了一张照片,但gridview没有更新为sdcardImages的新图片。notifyDataSetChanged它给了我一个错误,它提供的解决方案如下:1º-更改为sdcardImages.deferNotifyDataSetChanged 2º-向sdcardImages添加强制转换我更新了代码并添加了建议,但它仍然不会用拍摄的新图片刷新gridview…顺便问一下,我想刷新gridview或gridview适配器?我有点困惑…应用程序根本没有改变。
String[] projection = {MediaStore.Images.Thumbnails._ID}; 

cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, // Which columns to return null, // Return all rows null, MediaStore.Images.Thumbnails.IMAGE_ID);


columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID); 

sdcardImages = (GridView) findViewById(R.id.gridView1); sdcardImages.setAdapter(new ImageAdapter(this));
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (resultCode == RESULT_OK){
        if (requestCode == TAKE_PICTURE) {
            refresh()
        }
    }