Галерея не прокручивается - PullRequest
0 голосов
/ 29 марта 2012

Это две части просьбы о помощи.Я создаю галерею изображений, которые я буду снимать с определенной папки на SDCard.Я создал класс GalleryView:

import android.app.Activity;
import android.os.Bundle;
import android.widget.AdapterView;
import android.widget.Gallery;
import android.widget.ImageView;
import android.widget.Toast;

/**
 * @author elidd1
 *
 */
public class GalleryView extends Activity{

    ImageView imageView;
    ;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.gallery);

        // Set up an array of the Thumbnail Image ID column we want
        String[] projection = {MediaStore.Images.Thumbnails._ID};
        // Create the cursor pointing to the SDCard
        cursor = managedQuery( MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,
            projection, // Which columns to return
            null,       // Return all rows
            null,
            MediaStore.Images.Thumbnails.IMAGE_ID);
       // Get the column index of the Thumbnails Image ID
       columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Thumbnails._ID);



    Gallery ga = (Gallery)findViewById(R.id.Gallery01);
    ga.setAdapter(new GallImageAdapter(this,cursor,columnIndex));

        imageView = (ImageView)findViewById(R.id.ImageView01);


    }



}

и пользовательский адаптер изображений с именем GallImageAdapter:

import android.content.Context;
import android.content.res.TypedArray;
import android.database.Cursor;
import android.net.Uri;
import android.provider.MediaStore;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Gallery;
import android.widget.ImageView;

public class GallImageAdapter extends BaseAdapter {
    public Cursor cursor;
    private int columnIndex;
    private Context context;
    int imageBackground;

    public GallImageAdapter(Context ctx, Cursor cur, int cIn) {
    context = ctx;
    columnIndex = cIn;
    cursor = cur;
}

    @Override
    public int getCount() {

        return cursor.getCount();
    }

    @Override
    public Object getItem(int position) {

        return position;
    }

    @Override
    public long getItemId(int position) {

        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ImageView picturesView;
        if(convertView == null){
            picturesView = new ImageView(context);
            // move cursor to current position
            cursor.moveToPosition(position);
            int imageID = cursor.getInt(columnIndex);

            picturesView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,""+imageID));

            picturesView.setScaleType(ImageView.ScaleType.FIT_CENTER);
            picturesView.setPadding(10,10,10,10);

        }else{
            picturesView = (ImageView)convertView;
        }
        return picturesView;
    }

}

Первая проблема заключается в том, что метод getCount возвращает исключение нулевого указателя:позволяя мне прокручивать изображения ..

Вторая часть моего вопроса - как мне указать на конкретную папку .. "/ LC / images /" Я предполагаю, что это произойдет в моем адаптере изображений вэта строка:

picturesView.setImageURI(Uri.withAppendedPath(MediaStore.Images.Thumbnails.EXTERNAL_CONTENT_URI,""+imageID)); 

спасибо за любую помощь

1 Ответ

1 голос
/ 29 марта 2012

Вы не инициализируете курсор перед его использованием. Вы можете использовать CursorAdapter или передать его в конструктор

...