2013-09-05 2 views
0

GridView 옆에 ImageView이 있고 제가하려는 것은 GridView에서 선택한 그림으로 ImageView을 설정하는 것입니다.ImageView를 선택한 GridView 이미지가 작동하지 않도록 설정합니다.

내가 내 프로젝트를 실행하면 모든 작은 이미지는 일반적으로 GridView (photoGrid_)에 표시,하지만 난 썸네일의 Toast 표시 올바른 인덱스를 누르면,하지만 때 내 ImageView (currentImage_ 것은) 표시되지 않습니다 아무것도. 유사한 솔루션을 시도했지만 동일한 결과를 얻거나 내 앱이 중단됩니다.

MyActivity

public void gridViewArea() 
{ 
    photoGrid_ = (GridView) findViewById(R.id.gridview); 
    photoGrid_.setAdapter(imageAdapter_); 

    photoGrid_.setOnItemClickListener(new AdapterView.OnItemClickListener() 
    { 
     @Override 
     public void onItemClick(AdapterView<?> parent, View view, int position, long id) 
     { 
      Toast.makeText(MyActivity.this, "" + position, Toast.LENGTH_SHORT).show(); 

      currentImage_ = (ImageView) imageAdapter_.getView(position, view, parent); 
      currentImage_.setImageResource(imageAdapter_.getSelectedImage()[position]); 

     } 
    }); 
} 

어댑터

public class ImageAdapter extends BaseAdapter 
{ 
private Context mContext; 

public ImageAdapter(Context c) 
{ 
    mContext = c; 
} 

public int getCount() 
{ 
    return mThumbIds.length; 
} 

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

public long getItemId(int position) 
{ 
    return 0; 
} 

public View getView(int position, View convertView, ViewGroup parent) 
{ 
    ImageView imageView; 
    if (convertView == null) { // if it's not recycled, initialize some attributes 
     imageView = new ImageView(mContext); 
     imageView.setLayoutParams(new GridView.LayoutParams(85, 85)); 
     imageView.setScaleType(ImageView.ScaleType.CENTER_CROP); 
     imageView.setPadding(0, 0, 0, 0); 
    } 
    else 
    { 
     imageView = (ImageView) convertView; 
    } 
    imageView.setImageResource(mThumbIds[position]); 

    return imageView; 
} 

private Integer[] mThumbIds = 
{ 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7, 
     R.drawable.sample_0, R.drawable.sample_1, 
     R.drawable.sample_2, R.drawable.sample_3, 
     R.drawable.sample_4, R.drawable.sample_5, 
     R.drawable.sample_6, R.drawable.sample_7 
}; 

public Integer[] getSelectedImage() 
{ 
    return mThumbIds; 
} 

}

답변

0

으로 당신이 재정의 currentImage_ = (ImageView) imageAdapter_.getView(position, view, parent);

을하고 무엇을 currentImage_입니다.

레이아웃에있는 이미지 뷰를 가리키는 것으로 추측됩니다. gridview의 요소가 이미지 뷰이기도하므로 앱이 충돌하지 않습니다.

currentImage_는 항상 세부 이미지 뷰를 가리켜 야하고는, 한마디로

   currentImage_.setImageResource(imageAdapter_.getSelectedImage()[position]); 

을 수행하여 그 내용을 변경하려면 이전 행을 제거해야합니다.

관련 문제