将ImageView设置为选定的GridView图像不起作用

时间:2013-09-05 10:53:24

标签: android android-imageview android-gridview

我在ImageView旁边有一个GridView,而我要做的就是将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]);

         }
     });
}

ADAPTER

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

}

1 个答案:

答案 0 :(得分:0)

通过currentImage_ = (ImageView) imageAdapter_.getView(position, view, parent);

你要覆盖currentImage_是什么。

我想它应该指向您在布局中的imageview。 您的应用程序不会因为gridview的元素也是图像视图而崩溃。

currentImage_应始终指向详细的ImageView,您只应通过执行

来更改其内容
             currentImage_.setImageResource(imageAdapter_.getSelectedImage()[position]);

简而言之,删除上一行。