2012-04-01 10 views
0

、私は多くの人がこれまでのところ私のソリューションは、ベースアダプタコールは2つのテーブルの行を持っていることにレイアウトすることです。..アンドロイドのための2つの行を持っているギャラリーを作成するためにギャラリーとbaseAdapterインクリメントアンドロイド

を戦ってきた好きそれぞれの写真のための場所で、次に私のベースアダプタの1つの画像を配置し、次の位置にカーソルを移動し、2番目の場所のホルダーに別の画像を配置..これまでのところ、 .. image1とimage2を最初のパスに置き、次のパスでimage2にimage2を配置します。私のベースアダプタが呼び出されるインクリメントを設定する方法はありますか?

BELOW固定コード

public class GallAdapter extends BaseAdapter { 
     public Cursor cursor; 
     private int columnIndex; 
     private Context context; 
     int imageBackground; 
     String url; 
     Uri uri; 
     int originalImageId; 
     int imageID; 
     int columnData; 
     ViewGroup myp; 
     ImageView d; 
     ImageView d2; 
     Boolean done = false; 

     public GallAdapter(Context ctx, Cursor cur, int cIn) { 
      context = ctx; 
      columnIndex = cIn; 

      cursor = cur; 

     } 

     @Override 
     public int getCount() { 
      Toast.makeText(context, "old:"+cursor.getCount()+" 1/2:"+cursor.getCount()/2+" roundedup:"+Math.ceil((float)cursor.getCount()/2), Toast.LENGTH_SHORT).show(); 
      return (int) Math.ceil((float)cursor.getCount()/2); 
     } 

     @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) { 
      myp = parent; 
      View v; 

      if(convertView == null){ 
       v = LayoutInflater.from(context).inflate(R.layout.galitem2, parent, false); 
      }else{ 
       v = convertView; 

      } 


      ImageView photo = (ImageView) v.findViewById(R.id.imageView); 
      ImageView border = (ImageView) v.findViewById(R.id.borderView); 
      d = (ImageView) v.findViewById(R.id.delView); 

      ImageView photo2 = (ImageView) v.findViewById(R.id.image2View); 
      ImageView border2 = (ImageView) v.findViewById(R.id.border2View); 
      d2 = (ImageView) v.findViewById(R.id.del2View); 

       cursor.moveToPosition(position*2); 

       // Get the current value for the requested column 
       imageID = cursor.getInt(columnIndex); 
       // obtain the image URI 
       uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID)); 
       url = uri.toString(); 
       // Set the content of the image based on the image URI 
       originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length())); 
       Bitmap b = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(), 
           originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null); 
       photo.setImageBitmap(b); 

       photo.setScaleType(ImageView.ScaleType.FIT_CENTER); 
       d.setTag(uri); 
       d.setOnClickListener(new OnClickListener(){ 


        public void onClick(View v) { 
         // TODO Auto-generated method stub 
         String path = getRealPathFromURI((Uri) v.getTag()); 

         File file = new File(path); 
         file.delete(); 
         getContentResolver().delete((Uri) v.getTag(), null, null); 
         sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()+"/LC/images/"))); 
         Intent galView = new Intent(getBaseContext(), GalleryView2.class); 
         galView.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
         getBaseContext().startActivity(galView); 
         finish(); 


        } 


       }); 
       if(position*2+1<=cursor.getCount()-1){ 
        // Move cursor NEXT current position 

        cursor.moveToPosition(position*2+1); 

        // Get the current value for the requested column 
        imageID = cursor.getInt(columnIndex); 
        // obtain the image URI 
        uri = Uri.withAppendedPath(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, Integer.toString(imageID)); 
        url = uri.toString(); 
        // Set the content of the image based on the image URI 
        originalImageId = Integer.parseInt(url.substring(url.lastIndexOf("/") + 1, url.length())); 
        Bitmap b2 = MediaStore.Images.Thumbnails.getThumbnail(context.getContentResolver(), 
            originalImageId, MediaStore.Images.Thumbnails.MINI_KIND, null); 
        photo2.setImageBitmap(b2); 

        photo2.setScaleType(ImageView.ScaleType.FIT_CENTER);  
        d2.setTag(uri); 
        d2.setOnClickListener(new OnClickListener(){ 


         public void onClick(View v) { 
          // TODO Auto-generated method stub 
          String path = getRealPathFromURI((Uri) v.getTag()); 

          File file = new File(path); 
          file.delete(); 
          getContentResolver().delete((Uri) v.getTag(), null, null); 
          sendBroadcast(new Intent(Intent.ACTION_MEDIA_MOUNTED, Uri.parse("file://" + Environment.getExternalStorageDirectory()+"/LC/images/"))); 
          Intent galView = new Intent(getBaseContext(), GalleryView2.class); 
          galView.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
          getBaseContext().startActivity(galView); 
          finish(); 


         } 


        }); 
       }else{ 
        //border2.setVisibility(v.INVISIBLE); 
        d2.setVisibility(v.INVISIBLE); 

       } 

      return v; 
     } 

    } 



} 
+0

したがって、独立してスクロールする2つの行が必要ですか、アイテムごとに2つの行(getview呼び出し)を持つギャラリーを作成していますか? – dmon

+0

getview呼び出しあたり2行... – erik

答えて

1

待って、あなただけの望むものではありません。

first photo -> cursor.moveToPosition(position * 2); 
second photo -> cursor.moveToPosition(position * 2 + 1); 

あなたは自分のアダプタのgetCount()に右のサイズを返す必要があります。

+0

次はありませんか? – erik

+0

私は本当に何を言っているのか分かりません。私はgetCountが見つかったイメージの総数を返したと思っています。私は困惑しています。getView()を作成する方法は他のすべてのイメージを呼び出すだけです。 – erik

+0

'cursor.getCount()'について話していない)だから、ビューを取得するごとに2つのものを表示したいのですか?次に、あなたの* adapter *は実際に持っているものの半分を持っていると述べる必要があります。そうすれば、getView()は半分の時間しか呼び出されません。次に、 'getView()'では、この位置に対応する2つの画像をレンダリングし、 'pos * 2'と' pos * 2 + 1'が入ります。 – dmon

関連する問題