2016-03-15 104 views
1

好日子没有图像显示在GridView控件

我试图捕捉摄像机的图像时,我按下按钮,然后将其保存在Sqllite,然后在GridView中显示它.. 但之后,我捕捉到的图像它不会出现在网格视图中:/ logcat中没有错误,除非gridview 中没有显示任何人可以帮助吗?

这里是我的代码

public class CameraFragment extends Fragment { 

    public static final int MEDIA_TYPE_IMAGE = 1; 
    private static final int CAMERA_CAPTURE_IMAGE_REQUEST_CODE = 100; 
    private static final String IMAGE_DIRECTORY_NAME = "Myfiles";// directory name to store captured images 
    private static String mCurrentPhotoPath; // file path to the last image captured 
    View view; 
    private Uri fileUri;// file url to store image 
    private GridView myGridView; 
    private ImageListAdapter adapter; 
    private List<Images> myLists;// image list 
    Images images; 
    DatabaseAdapter DBadapter; 


    @Nullable 
    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { 

     if (view != null) { 
      ViewGroup parent = (ViewGroup) view.getParent(); 
      if (parent != null) 
       parent.removeView(view); 
     } 
     try { 
      // Inflate the layout for this fragment 
      view = inflater 
        .inflate(R.layout.fragment_camera, container, false); 


     } catch (InflateException e) { 
      /* map is already there, just return view as it is */ 
      e.printStackTrace(); 
     } 
     if (view != null) 
      init(); 
     return view; 

    } 

    // initialize all the variables 
    private void init() { 
     DatabaseAdapter DBadapter =new DatabaseAdapter(getActivity()); 
     DBadapter.open(); 
     myLists = new ArrayList<Images>(); 
     myLists=DBadapter.getImagesList(); 
     adapter = new ImageListAdapter(getActivity(), R.layout.img_list_view, myLists); 
     // imageView = (ImageView) view.findViewById(R.id.imageListView); 
     Button myButton = (Button) view.findViewById(R.id.camerabutton); 
     myButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); 
       fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);// create a file to save the image 
       intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri); // set the image file name 
       startActivityForResult(intent, CAMERA_CAPTURE_IMAGE_REQUEST_CODE); // start the image capture Intent 
      } 
     }); 
     myGridView = (GridView) view.findViewById(R.id.gridView); 
     myGridView.setAdapter(adapter); 
/** 
    * Create a file Uri for saving an image or video 
    */ 
    public Uri getOutputMediaFileUri(int type) { 

     return Uri.fromFile(getOutputMediaFile(type)); 
    } 
    /** 
    * returning image/
    */ 
    private static File getOutputMediaFile(int type) { 

     // External sdcard location 
     File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES), IMAGE_DIRECTORY_NAME); 

     // Create the storage directory if it does not exist 
     if (!mediaStorageDir.exists()) { 
      mediaStorageDir.mkdirs(); 
      Log.d(IMAGE_DIRECTORY_NAME, "Oops! Failed create " 
        + IMAGE_DIRECTORY_NAME + " directory"); 
      //return null; 

     } 

     // Create a media file name 
     String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", 
       Locale.getDefault()).format(new Date()); 
     File mediaFile; 
     if (type == MEDIA_TYPE_IMAGE) { 
      mediaFile = new File(mediaStorageDir.getPath() + File.separator 
        + "IMG_" + timeStamp + ".jpg"); 
     } else { 
      return null; 
     } 


     return mediaFile; 


    } 

    @Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     switch (requestCode) { 
      case 1: 
       if (resultCode == Activity.RESULT_OK) { 
        Uri selectedImage = data.getData(); 
        String[] filePathColumn = {MediaStore.Images.Media.DATA}; 
        Cursor cursor = getActivity().getContentResolver().query(selectedImage, filePathColumn, null, null, null); 
        cursor.moveToFirst(); 

        int columnIndex = cursor.getColumnIndex(filePathColumn[0]); 
        //file path of captured image 
        String filePath = cursor.getString(columnIndex); 
        //file path of captured image 
        File f = new File(filePath); 
        String filename = f.getName(); 
        cursor.close(); 
        DBadapter.insertImage(images); //insaert image to database 
        myLists=DBadapter.getImagesList(); 
        adapter = new ImageListAdapter(getActivity(), R.layout.img_list_view, myLists); 
        myGridView.setAdapter(adapter); 
        myGridView.invalidateViews(); 
    break; 
} 

      case 2: 
     if (resultCode == getActivity().RESULT_CANCELED) { 
      // user cancelled Image capture 
      Toast.makeText(getActivity(), "User cancelled image capture", Toast.LENGTH_SHORT) 
        .show(); 
     } 
     else { 
      // failed to capture image 
      Toast.makeText(getActivity(), "Sorry! Failed to capture image", Toast.LENGTH_SHORT) 
        .show(); 
      } break; 
    }} 
} 

这里是XML:

<FrameLayout 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" 
    tools:context="com.example.labon.invoicemanger.CameraFragment"> 

    <!-- TODO: Update blank fragment layout --> <RelativeLayout 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="My Invoice" 
     android:layout_gravity="center" 
     android:layout_margin="20dp" 
     android:id="@+id/textView16" 
     android:textColor="@color/colorPrimary" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" /> 
    <GridView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/gridView" 
     android:layout_above="@+id/camerabutton" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" 
     android:numColumns="auto_fit"/> 

    <Button 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="Add New Invoice" 
     android:textSize="18dp" 
     android:textStyle="bold" 
     android:textColor="@android:color/white" 
     android:id="@+id/camerabutton" 
     android:drawableRight="@drawable/screenshot" 
     android:background="@color/colorAccent" 
     android:layout_alignParentBottom="true" 
     android:layout_alignParentLeft="true" 
     android:layout_alignParentStart="true" /> 
    <!--android:drawableRight="@drawable/screen_shot"--> </RelativeLayout> </FrameLayout> 
+0

你可以发布你的XML的GridView? –

+0

我发布了@YogeshUmeshVaity – labon

回答

5

我想你应该刷新网格视图当您保存图像sqlite的。 看到下面的链接,它可能会帮助你: click here! 你应该使用invalidateViews()方法。

+0

@labon能帮助你吗? –

+0

仍然无法使用@PouryaMandiSanam – labon

+0

@AbdullahAlHazmy – labon