2011-08-10 10 views
0

ギャラリーでThis LoaderImageViewを使用しています。私はサムネイル画像のグリッドを表示します。ユーザーがサムネイル画像をクリックすると、その位置を取得し、インターネットから大きな画像を取得しながらProgressBarを表示する「LoaderImageView」のギャラリーを表示する新しいアクティビティに渡します。ギャラリーアンドロイドで次の、前のビューを呼び出すには?

私がしたいことは、ユーザーが画像を選択したときに、次の前のビューを自動的に呼び出す必要があることです。実際に画像をロードします。

これは、OnItemSelectedListener()を使用してこれを実行しようとしています。

コードがあります。しかし、これはうまく動作していません。前のページにスクロールすると、最初の画像に移動します。私の論理ごとに動作していません。

class BigImageAdapter extends BaseAdapter { 

    DisplayMetrics displayMatrics; 
    HashMap<String, Bitmap> hasLargeBitmap; 
    SharedPhotosData sharedPhotosData; 
    Context mContext; 

    public BigImageAdapter(Context contex, SharedPhotosData photoData) { 

     mContext = contex; 
     displayMatrics = new DisplayMetrics(); 
     hasLargeBitmap = new HashMap<String, Bitmap>(); 
     getWindowManager().getDefaultDisplay().getMetrics(displayMatrics); 
     sharedPhotosData = photoData; 
    } 

    public void recycleAllBitmap() { 
     try { 
      int i = 0; 
      Collection<Bitmap> temp = hasLargeBitmap.values(); 
      for (Bitmap bitmap : temp) { 
       if (bitmap != null) { 
        if (bitmap.isRecycled() == false) { 
         bitmap.recycle(); 
         i++; 
        } 
       } 
      } 
      Log.e("Recycled", "No of images recycled"+i); 

     } catch (Exception e) { 
      e.printStackTrace(); 
     } 

    } 

    public int getCount() { 

     if (sharedPhotosData != null) { 
      if (sharedPhotosData.photoData != null) { 
       return sharedPhotosData.photoData.size(); 
      } else { 
       Log.e(TAG, "sharedData.photoData is null"); 
      } 
     } else { 
      Log.e(TAG, "sharedData is null"); 
     } 

     return 0; 
    } 

    public Object getItem(int position) { 
     return position; 
    } 

    public long getItemId(int position) { 

     return position; 
    } 

    public View getView(int position, View convertView, ViewGroup parent) { 
     View rowView = null; 
     try { 
      MyData curData = null; 
      curData = sharedPhotosData.photoData.get(position); 
      if (convertView == null) { 
       String imagePath = Environment.getExternalStorageDirectory().toString() + SMConstants.FILE_PATH_BASE 
         + SMConstants.S3Folders.PHOTO + curData.getLargeURLLocalPath() + "/" + SMConstants.FILE_NAME_PREFIX 
         + curData.getFileName(); 
       if (hasLargeBitmap.containsKey(imagePath) == false) { 
        rowView = new AsynImageView(hasLargeBitmap, PhotoGalleryActivity.this, curData); 
       } else { 
        Bitmap image = hasLargeBitmap.get(imagePath); 

        ImageView mImageView = new ImageView(mContext); 
        mImageView.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT, 
          Gravity.CENTER)); 
        mImageView.setImageBitmap(image); 
        mImageView.setScaleType(ImageView.ScaleType.FIT_CENTER); 
        mImageView.setAdjustViewBounds(true); 
        rowView = mImageView; 
       } 
       rowView.setLayoutParams(new Gallery.LayoutParams(android.view.ViewGroup.LayoutParams.FILL_PARENT, 
         android.view.ViewGroup.LayoutParams.FILL_PARENT)); 
      } else { 
       rowView = convertView; 
      } 

     } catch (Exception e) { 
      Log.e("Exception", "LargeSlideShow.GetView Message = " + e); 
      e.printStackTrace(); 
     } catch (Error e) { 
      Log.e("Error", "LargeSlideShow.GetView Message = " + e); 
      e.printStackTrace(); 
     } 
     return rowView; 
    } 
} 

@Override 
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 
    try { 

     if (position - 1 >= 0) { 
      myGalleryForLargeImage.setSelection((position - 1)); 
     } 
     if (position + 1 < size) { 
      myGalleryForLargeImage.setSelection((position + 1)); 
     } 
    } catch (Exception e) { 
     Log.e(TAG, "Exception = " + e.toString()); 
     e.printStackTrace(); 
    } 
} 

@Override 
public void onNothingSelected(AdapterView<?> arg0) { 

} 

答えて

0

です。私は "myGalleryForLargeImage.setSelection((position - 1));"の代わりに "それは完了しなければならない。今はViewを取得しようとし、getView()メソッドはImageリクエストを開始します。

@Override 
public void onItemSelected(AdapterView<?> parent, View v, int position, long id) { 
    try { 

     if (position - 1 >= 0) { 
      bigImageAdapter.getView(position-1, null, myGalleryForLargeImage); 
     } 
     if (position + 1 < size) { 
      bigImageAdapter.getView(position+1, null, myGalleryForLargeImage); 
     } 
    } catch (Exception e) { 
     Log.e(TAG, "Exception = " + e.toString()); 
     e.printStackTrace(); 
    } 
} 
関連する問題