나는 이미 전화의 모든 이미지를 포함하는 gridview를 구현해야하는 어플리케이션에서 작업 중입니다. 코드를 작성했지만 문제는이 응용 프로그램을 열 때 이미지가없는 스크롤 가능한 BLANK gridview가 생기는 것입니다. 아무도 도와 줄 수 있습니까?빈 이미지를 보여주는 전화 갤러리의 이미지 격자보기
이 내 주요 활동 코드 :
package com.example.gridviewgallery;
import android.database.Cursor;
import android.os.Bundle;
import android.provider.MediaStore;
import android.support.v7.app.ActionBarActivity;
import android.view.MenuItem;
import android.widget.GridView;
public class MainActivityGridView extends ActionBarActivity {
private int columnIndex;
private Cursor cursor = null;
@SuppressWarnings("deprecation")
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main_activity_grid_view);
String[] projection = {MediaStore.Images.Thumbnails._ID, MediaStore.Images.Thumbnails.DATA};
cursor = managedQuery(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, projection, null, null,
MediaStore.Images.Thumbnails.IMAGE_ID);
columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);
GridView gridview = (GridView) findViewById(R.id.gridView1);
gridview.setAdapter(new GridAdapter(getApplicationContext(), cursor, columnIndex));
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
이 내 GridAdapter 클래스 코드 :
package com.example.gridviewgallery;
import android.content.Context;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.support.v4.widget.CursorAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridView;
import android.widget.ImageView;
public class GridAdapter extends CursorAdapter
{
private Context mContext;
private Cursor mCursor;
private int mColumnIndex;
private ImageView imageView;
@SuppressWarnings("deprecation")
public GridAdapter(Context context, Cursor c, int ci) {
super(context, c);
mContext = context;
mCursor = c;
mColumnIndex = ci;
}
@Override
public void bindView(View convertView, Context context, Cursor curs)
{
imageView = (ImageView) convertView.findViewById(R.id.image);
}
@Override
public View newView(Context context, Cursor curs, ViewGroup parent)
{
imageView = new ImageView(mContext);
LayoutInflater inflater = LayoutInflater.from(parent.getContext());
View retView = inflater.inflate(R.layout.grid_image, parent, false);
int id = curs.getInt(mColumnIndex);
imageView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI, String.valueOf(id)));
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
return retView;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
public int mygetItemId(int position) {
return 0;
}
}
이가 grid_image.xml 코드 :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
android:orientation="vertical"
android:padding="5dp"
android:clickable="true"
android:focusable="true">
<ImageView
android:id="@+id/image"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
</ImageView>
</LinearLayout>
감사합니다.
.. 난 그냥 내 질문에 편집이 많은 천재 사람 덕분이야 – greenapps
을 게시하시기 바랍니다! 완벽하게 작동했습니다. – user3783005