我在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;
}
}
答案 0 :(得分:0)
通过currentImage_ = (ImageView) imageAdapter_.getView(position, view, parent);
你要覆盖currentImage_是什么。
我想它应该指向您在布局中的imageview。 您的应用程序不会因为gridview的元素也是图像视图而崩溃。
currentImage_应始终指向详细的ImageView,您只应通过执行
来更改其内容 currentImage_.setImageResource(imageAdapter_.getSelectedImage()[position]);
简而言之,删除上一行。