0

グリッドビューを持つアクティビティ(MyActivity)が1つあります。また、「ギャラリーから既存の写真を追加」ボタンがあります。このボタンをクリックすると、ギャラリービューアアプリケーションが開き、ギャラリーで写真を選択すると、MyActivityのグリッドビューが更新されます。また、選択した写真をsdcardのmyimageフォルダーに保存しています。

グリッドビューで特定のセルを選択すると、フォトビューアーが開き、そのフォルダー(myimage)に存在するすべての画像が表示されるようにしたいと思います。

コードを以下に示します

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        try {

        Intent intent = new Intent(Intent.ACTION_VIEW);

        intent.setDataAndType(Uri.parse("file:///sdcard/myimage/*"), 
        "image/*"); 

        startActivity(intent); 

}

このコードは、グリッドビューの特定のセルをクリックすると、フォトビューアーを開きますが、そのフォルダー内の写真は表示されません。

しかし、私がこのコードを使用する場合

public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
        try {

        Intent intent = new Intent(Intent.ACTION_VIEW);

        intent.setDataAndType(Uri.parse("file:///sdcard/myimage/a.jpg"), 
        "image/*"); 

        startActivity(intent); 

}

myimageフォルダ内のすべての写真ではなく、写真a.jpgのみが表示されます。また、フォトビューアに次と前の矢印が表示されません。

SDカードの特定のフォルダにあるすべての画像を次と前の矢印で表示して、すべての写真をトラバースできるようにします。

この方法でこれが不可能な場合は、他のアプローチを提案してください(コードも添付してください)。

4

1 に答える 1

1

次のロジックを使用して、ギャラリーに存在するすべての画像のパスを取得します。独自のPhotoGridを作成して、すべての画像を表示します。画像と次または前のボタンを表示する画像ビューがある別のアクティビティを記述します。[次へ]ボタンをクリックすると、ArrayListのその位置にあるカウンターセットの画像が増えます。

ArrayList<String> listOfAllImages = new ArrayList<String>();
String absolutePathOfImage = null;
uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;

            String[] projection = { MediaColumns.DATA,
                    MediaColumns.DISPLAY_NAME };

            cursor = activity.managedQuery(uri, projection, null, null, null);
            column_index = cursor.getColumnIndexOrThrow(MediaColumns.DATA);
while (cursor.moveToNext()) {
absolutePathOfImage = cursor.getString(column_index);
listOfAllImages.add(absolutePathOfImage);
}

ありがとうDeepak

于 2011-05-18T07:30:12.433 に答える