서버에 저장된 사진 파일을 가져와 coverFlow형태로 띄우는 겁니다

로그캣 에러는 널포인트 에러인데 소스 코드에서 어떤부분을 어떤식으로 바꾸어야할지 감을 못잡겠습니다.

고수님들 좀 도와주세여 ㅜ.ㅜ
10-19 07:46:15.110: ERROR/AndroidRuntime(402):     at com.ireal.sc.Gallery2Activity$ImageAdapter.getCount(Gallery2Activity.java:292)
10-19 07:59:27.100: ERROR/AndroidRuntime(429): FATAL EXCEPTION: main
10-19 07:59:27.100: ERROR/AndroidRuntime(429): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ireal.sc/com.ireal.sc.Gallery2Activity}: java.lang.NullPointerException
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.app.ActivityThread.access$2300(ActivityThread.java:125)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.os.Handler.dispatchMessage(Handler.java:99)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.os.Looper.loop(Looper.java:123)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.app.ActivityThread.main(ActivityThread.java:4627)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at java.lang.reflect.Method.invokeNative(Native Method)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at java.lang.reflect.Method.invoke(Method.java:521)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at dalvik.system.NativeStart.main(Native Method)
10-19 07:59:27.100: ERROR/AndroidRuntime(429): Caused by: java.lang.NullPointerException
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at com.ireal.sc.Gallery2Activity$ImageAdapter.getCount(Gallery2Activity.java:293)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at com.ireal.sc.CoverAbsSpinner.setAdapter(CoverAbsSpinner.java:119)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at com.ireal.sc.Gallery2Activity.onCreate(Gallery2Activity.java:75)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627)
10-19 07:59:27.100: ERROR/AndroidRuntime(429):     ... 11 more


소스코드
package com.ireal.sc;

import java.io.BufferedInputStream;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.net.URLConnection;
import java.util.ArrayList;

import org.apache.http.util.ByteArrayBuffer;

import android.app.Activity;
import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.Context;
import android.content.Intent;
import android.content.res.Configuration;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.LinearGradient;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.graphics.PorterDuffXfermode;
import android.graphics.Bitmap.Config;
import android.graphics.PorterDuff.Mode;
import android.graphics.Shader.TileMode;
import android.net.ConnectivityManager;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ImageView.ScaleType;
import com.ireal.SC;
import com.ireal.log.Logger;
import com.ireal.xml.Node;
import com.ireal.xml.kXML2Parser;

public class Gallery2Activity extends Activity {
 private static final Gallery Gallery = null;
 private ProgressDialog progressDialog;
    final private int PROGRESS_DIALOG = 0;
    private boolean flag = false;
    private Context mContext;
    private Handler handler = new Handler();
    private ImageAdapter coverImageAdapter ;
    ArrayList<Gallery> mList;
    private ImageView[] mImages;
    private FileInputStream fis;
    int mGalleryItemBackground;

    @Override
 public void onCreate(Bundle savedInstanceState)
    {
  requestWindowFeature(Window.FEATURE_NO_TITLE);
  super.onCreate(savedInstanceState);
  CoverFlow coverFlow;
     coverFlow = new CoverFlow(this);
     coverFlow.setAdapter(new ImageAdapter(this));
     coverImageAdapter.createReflectedImages();
     coverFlow.setSpacing(-15);
     coverFlow.setSelection(4, true);
     setContentView(coverFlow);
        mContext = this;
        Thread thread = new Thread(null, init);
  thread.start();
  showDialog(PROGRESS_DIALOG);
  if(flag == true){ 
  }
 }
    private Runnable init = new Runnable() {
  int mResponseCode; 
  @Override
  public void run() {
   getGalleryList();
  } 
 };
 
 private void getGalleryList(){
  FileInputStream in = null;
  URL url;
  URLConnection urlConn = null;
  InputStream is = null;
  String strXML = new String();
  StringBuffer sb = new StringBuffer();
  int mResponseCode;
  mList = new ArrayList<Gallery>();
  mImages = new ImageView[mList.size()];
  ConnectivityManager manager = (ConnectivityManager)getSystemService(Context.CONNECTIVITY_SERVICE);

  // 3G 를 사용하는지 확인힌다.
  boolean is3g = manager.getNetworkInfo(ConnectivityManager.TYPE_MOBILE).isConnectedOrConnecting();

  // WIFI 를 사용하는지 확인한다.
  boolean isWifi = manager.getNetworkInfo(ConnectivityManager.TYPE_WIFI).isConnectedOrConnecting();
  
  // 3G 와 WIFI 중 어떤 네트워크를 사용하지는 화면에 보여준다.      
  if(is3g || isWifi){
   wifi3g.sendEmptyMessage(0);
    try{
          url = new URL("http://"+SC.SERVER_ADDRESS+"/gallery.action?pages=get.gallery.list");
          urlConn = url.openConnection();
          
          HttpURLConnection huc = (HttpURLConnection)urlConn;
          huc.setReadTimeout(1500);
    mResponseCode = huc.getResponseCode();
    if(mResponseCode != HttpURLConnection.HTTP_OK){
     disconnectedHandler.sendEmptyMessage(0);
    }
          is = urlConn.getInputStream();
    BufferedReader br = new BufferedReader(new InputStreamReader(is));
    
    if(br != null){
     sb.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
     while((strXML = br.readLine())!= null){
      sb.append(strXML);
     }   
    }
    
    if(sb.length() > 0){
     Node node = new kXML2Parser().parse(sb.toString());
     Gallery gallery;     
     for(int i = 0 ; i<node.getNNodes();i++){
      Node n = node.getNode(i);
      if(n.getName().equals("gallery")){
       gallery = new Gallery();
       for(int j = 0 ; j<n.getNNodes();j++){
        Node nn = n.getNode(j);
        if (nn.getName().equals("title")) {
         gallery.setTitle(nn.getValue());
        }else if (nn.getName().equals("url")) {
         gallery.setUrl(nn.getValue());         
         File file = new File(SC.DIR_PATH+"/"+gallery.getUrl());
         
         if(!file.exists()){
          URL urls = new URL("http://"+SC.SERVER_ADDRESS+"/files/gallery/"+gallery.getUrl());
          
          
          URLConnection ucon = urls.openConnection();
          BufferedInputStream bis = new BufferedInputStream(ucon.getInputStream());
          ByteArrayBuffer baf = new ByteArrayBuffer(50);
          int current = 0;
          while ((current = bis.read()) != -1) {
           baf.append((byte) current);
          }
          FileOutputStream fos = new FileOutputStream(file);
          fos.write(baf.toByteArray());
          fos.close();
          bis.close();
         }else{
          Logger.debug(gallery.getUrl() + " is exists");
         }
        }
       }
       mList.add(Gallery);
      }
     }
     flag=true;
    }
    if(flag == true){
     Logger.debug("true");
         
    }
    
    
         }catch(Exception e){
          Logger.error(e);
          finish();
          
   } finally{
    Logger.debug("Thread finally");
    
    if(is != null) try {is.close();} catch (Exception e) {}
   }
  }else{
   no_wifi3g.sendEmptyMessage(0);   
   
//   Toast.makeText(Gallery2Activity.this, "3g wifi 사용안함", Toast.LENGTH_SHORT).show();
   File file= new File(SC.DIR_PATH);
   File[] listFile = file.listFiles();
   for(File tempList:listFile){
    if(tempList.getName().startsWith("gallery") && tempList.getName().endsWith(".jpg")){
     Gallery gallery = new Gallery();
     gallery.setUrl(tempList.getName());
     mList.add(Gallery);
    }
   }
   
  }
 }
  
 private Handler disconnectedHandler = new Handler() {
  @Override
  public void handleMessage(Message msg) {
   Logger.debug("disconnectionHandler : "+msg.toString());
   Toast.makeText(Gallery2Activity.this, "네트워크를 확인 하세요.",  Toast.LENGTH_LONG).show();
  }
 };
 
 private Handler no_wifi3g = new Handler(){
  @Override
  public void handleMessage(Message msg) {
   Logger.debug("no_wifi3g : "+msg.toString());
  }
 };
 
 private Handler wifi3g = new Handler(){
  @Override
  public void handleMessage(Message msg) {
   Logger.debug("wifi3g : "+msg.toString());
  }
 };
 
 private class ImageAdapter extends BaseAdapter
 {
  ImageAdapter(Context c)
  {
   Logger.debug("ImageAdapter()");
   mContext = c;
  }
  // 이미지 클릭 시 전체 화면으로 이동
  /*public final void callImageViewer(int selectedIndex){
   Intent i = new Intent(mContext, GalleryDetailActivity.class);
   String imgPath = mList.get(selectedIndex).getUrl();
   i.putExtra("filename", imgPath);
   ArrayList<String> imgPaths = new ArrayList<String>();
   for(int a = 0;a<mList.size();a++)
   {
    imgPaths.add(mList.get(a).getUrl());
   }
   i.putStringArrayListExtra("gallery", imgPaths);
   startActivityForResult(i, 1);
  }*/
 
  public boolean deleteSelected(int index){
   
   return true;
  }
    public boolean createReflectedImages()
    {
            final int reflectionGap = 4;
           
           
            int index = 0;
            for (;;)
            {
             Bitmap originalImage = BitmapFactory.decodeResource(getResources(),100);
             int width = originalImage.getWidth();
             int height = originalImage.getHeight();
             Matrix matrix = new Matrix();
             matrix.preScale(1, -1);           
             Bitmap reflectionImage = Bitmap.createBitmap(originalImage, 0, height/2, width, height/2, matrix, false);            
             Bitmap bitmapWithReflection = Bitmap.createBitmap(width , (height + height/2), Config.ARGB_8888);         
             Canvas canvas = new Canvas(bitmapWithReflection);
             canvas.drawBitmap(originalImage, 0, 0, null);
             Paint deafaultPaint = new Paint();
             canvas.drawRect(0, height, width, height + reflectionGap, deafaultPaint);
             canvas.drawBitmap(reflectionImage,0, height + reflectionGap, null);
             Paint paint = new Paint();
             LinearGradient shader = new LinearGradient(0, originalImage.getHeight(), 0,
             bitmapWithReflection.getHeight() + reflectionGap, 0x70ffffff, 0x00ffffff,
             TileMode.CLAMP);
             paint.setShader(shader);
             paint.setXfermode(new PorterDuffXfermode(Mode.DST_IN));
             canvas.drawRect(0, height, width,
             bitmapWithReflection.getHeight() + reflectionGap, paint);
             ImageView imageView = new ImageView(mContext);
             imageView.setImageBitmap(bitmapWithReflection);
             imageView.setLayoutParams(new CoverFlow.LayoutParams(310, 380));
             imageView.setScaleType(ScaleType.MATRIX);
             mImages[index++] = imageView;    
            }
         //return true;
    }
  
  public int getCount()
  {
   return mList.size();
  }
  
  public Object getItem(int position){
   return position;
  }
  
  public long getItemId(int position){
   return position;
  }
     public View getView(int position, View convertView, ViewGroup parent)
      {
       return mImages[position];
      }
       public float getScale(boolean focused, int offset)
       {
           return Math.max(0, 1.0f / (float)Math.pow(2, Math.abs(offset)));
       }
  
 }
 // Menu Button Function
 @Override
 public void onConfigurationChanged(Configuration newConfig){
  super.onConfigurationChanged(newConfig);
 }
 @Override
    public boolean onCreateOptionsMenu(Menu menu){
  MenuInflater inflater = getMenuInflater();
  inflater.inflate(R.menu.gallery_menu, menu);
     return true;
    }
 @Override
 public boolean onOptionsItemSelected(MenuItem item){
  switch(item.getItemId()){
  case R.id.gallery_update:  // gallery list update
   getGalleryList();
   return true;
  default :
   return super.onOptionsItemSelected(item);
  }
 }
 private class Gallery{
     private String no;
  private String title;
  private String url;
  
  public String getNo(){
   return no;
  }
  public void setNo(String no){
   this.no = no;
  }
  public String getTitle(){
   return title;
  }
  public void setTitle(String title){
   this.title = title;
  }
  public String getUrl(){
   return url;
  }
  public void setUrl(String url){
   this.url = url;
  }
    }
 
 //다이얼로그
    protected Dialog onCreateDialog(int id) {
     progressDialog = new ProgressDialog(this);
  progressDialog.setMessage("캠퍼스 포토 Loading......  ");
  progressDialog.setIndeterminate(true);
  progressDialog.setCancelable(true);
  progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
  return progressDialog;
  }
    
     @Override
  protected void onPrepareDialog(int id, Dialog dialog) {
   // TODO Auto-generated method stub
   switch (id) {
   case (PROGRESS_DIALOG):
    AlertDialog mItemDialog = (AlertDialog) dialog;
    mItemDialog.setTitle("Loading......");
   break;
   }
  }
}