我正在努力解决这个问题。我有一些代码使用游标加载程序从SD卡查询图像,并在SimpleCorsorAdapter的帮助下在GridView中显示它们。我在网上看了一些例子,并通读了文档。我知道我做对了。代码运行时没有任何错误,但是我无法将缩略图显示在网格上。以下是我目前获得的代码:
GalleryFragment.java
public class GalleryFragment extends Fragment {
private SimpleCursorAdapter adapter;
public static final int PHOTO_LIST_ID = 0x01;
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_gallery, container, false);
// Bind adapter to grid
setupCursorAdapter();
// Initialize the loader with a special ID and the defined callbacks
getLoaderManager().initLoader(PHOTO_LIST_ID,
new Bundle(), imageLoader);
GridView gridView = (GridView) view.findViewById(R.id.gridView);
gridView.setAdapter(adapter);
return view;
}
private void setupCursorAdapter() {
String[] from = {MediaStore.Images.Thumbnails.DATA};
int[] to = {R.id.imageView};
adapter = new SimpleCursorAdapter(getActivity().getBaseContext(),
R.layout.gallery_image_item,
null, from, to,
0);
}
private LoaderManager.LoaderCallbacks<Cursor> imageLoader =
new LoaderManager.LoaderCallbacks<Cursor>() {
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {
// Define the columns to retrieve
String[] projection = {MediaStore.Images.Thumbnails._ID,
MediaStore.Images.Thumbnails.DATA};
return new CursorLoader(getActivity(),
MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
projection, null, null, null);
}
@Override
public void onLoadFinished(Loader<Cursor> loader, Cursor data) {
adapter.swapCursor(data);
}
@Override
public void onLoaderReset(Loader<Cursor> loader) {
adapter.swapCursor(null);
}
};
}
fragment\u gallery.xml
<LinearLayout 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="edu.sfsu.csc780.pictachio.GalleryFragment">
<GridView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/gridView"
android:numColumns="auto_fit"
android:verticalSpacing="10dp"/>
</LinearLayout>
gallery\u image\u item.xml
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<ImageView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:padding="10dp"
android:adjustViewBounds="true"
android:contentDescription="ImageView" />
</FrameLayout>
我在很多地方读到,建议使用RecyclerView而不是GridView。我已经试过了,但我不知道该创建什么样的模型。感谢您的帮助。谢谢
最好的方法是使用最近的图像库。它是如此简单。只需将库依赖项添加到项目中,然后将下面的行添加到类中。适配器已准备好,您可以为gridview设置它。
RecentImages ri = new RecentImages();
ImageAdapter adapter = ri.getAdapter(MainActivity.this);
它有一些选项用于自定义图像查询。
我不明白使用getLoaderManager()和initLoader()来获取图像。一种方法是从SQLite数据库中获取它们。一个合适的谷歌留档是@SQL查询。我提供了一个使用该查询方法的示例代码。但是我从来没有在Android中获取图像。
Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
String[] cols = new String[]{
MediaStore.Images.Media.DATA, // get the image
};
//String where = MediaStore.Images.Media.DATA;
Cursor cursor = getContentResolver().query(uri, cols, null, null, null);
if(cursor.moveToFirst()) {
int column_image = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
res = cursor.getString(column_image);
}
cursor.close();
笔记:
试试看,让我们知道会发生什么。
我正在尝试制作一个选项卡,其中我必须在gridview中显示图像,所以我从一个库中制作了普通选项卡,并制作了一个适配器来显示我的主要活动代码中的图像。 我的片段类。 我已将适配器设置如下: 我能够在活动中创建网格视图,但是我用它来声明类中的图像,但在这里我遇到了错误。我在适配器中声明为适配器将调用图像的 Sso。它正确编译,没有任何错误,但它显示运行时错误错误为 那么如何解决这个问题,我必须声明图
我想在GridView中显示图像列表。但我做不到。我想知道资产中图像列表的数据类型,以及构造函数在这种情况下的帮助。我刚刚开始学习颤振,我不知道如何使用它。
问题内容: 我正在尝试从设备sd卡加载png图像作为可绘制图像。我使用以下功能,但不起作用: 图像路径为:mnt / sdcard / MyFolder / image.png 当我尝试调用该方法时,应用程序崩溃了,我该如何加载位于sdcard中的png图像并将其转换为Drawable对象? 问题答案: 实际上,直接在文件路径中有一个BitmapDrawable构造函数。您正在使用的方法已被描述。
问题内容: 我希望能够从Android设备的内部缓存中移动或复制文件,并将其放入SD卡上的永久存储区。这是我到目前为止所拥有的: 问题答案:
但是宽度和高度较低的图像成功地加载到图像视图中! 有人能告诉我代码有什么问题吗?我做错了什么?我只想从库中导入相机图像,并在图像视图中显示它们!
问题内容: 我需要在手机中打开我的画廊,然后选择一张在活动中在imageview中打开的图片..没什么困难..但是我在模拟器(genymotion)中有完美的代码和thise代码可以运行..但是在小米Mi4上却没有。 打开画廊选择项目,什么也没有。 我没有更多的电话了:( 我尝试下载一些与此主题相关的示例,并且每个示例都是相同的。 您是否有一些从图库中选择图像并在imageview中显示的项目?如