2012-03-29 5 views
0

Dies ist ein zweiteiliger Bitte um Hilfe. Ich erstelle eine Galerie von Bildern, die ich aus einem bestimmten Ordner auf der SD-Karte ziehen werde. Ich habe eine Galerie Klasse erstellt:Galerie nicht scrollen

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); 


    } 



} 

und ein eigenes Bild Adapter genannt 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; 
    } 

} 

erste Problem ist, dass die getCount Methode eine Null-Zeiger-Ausnahme zurückgibt: es mir erlaubt, nicht zu scrollen Sie durch die Bilder ..

Der zweite Teil meiner Frage ist, wie zeige ich auf einen bestimmten Ordner .. "/ LC/images /" Ich gehe davon aus, dass es in meinem Bildadapter in dieser Zeile passieren würde:

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

Dank für jede Hilfe

Antwort

1

Sie initialisieren keinen Cursor vor der Verwendung können Sie Adapter Cursor verwenden oder in Konstruktor

+0

im geben sorry, ich erkannte, dass ich es zu starten vergessen in meinem gallery view und übergebe es an den adapter, sobald ich es gepostet habe .. im editieren des posts oben .. will immer noch wissen wie man einen bestimmten ordner an den adapter weiterleitet .. – erik

+0

Versuch Uri.parse ('file://dein Weg') –