如果单击新图像,请将原始图像替换为原始图像

时间:2011-05-20 07:42:55

标签: android android-imageview

我正在使用带有ImageAdapter的网格视图来显示图像。 我有两组包含原始图像的 mThumbIds 和包含所选图像的 cThumbIds

现在,当我点击图像时,我用所选图像更改了普通图像。代码如下:

final ImageView iv = (ImageView)v.findViewById(R.id.icon_image);
            iv.setOnClickListener(new OnClickListener(){

                @Override
                public void onClick(View arg0) {
                    // TODO Auto-generated method stub
                    //iv.setColorFilter(Color.LTGRAY);
                    iv.setImageResource(cThumbIds[position]);
                    //iv.bringToFront();

                    index= position;

                }

            });

            iv.setImageResource(mThumbIds[position]);

但是,当我点击另一个图像时,另一个图像也显示为已选中,则会出现问题。正确的方法是将新图像显示为已选择,然后删除所选的旧图像。换句话说,较旧的图像应恢复为原始图像。

请帮我解决这个问题

谢谢,

的Pankaj

2 个答案:

答案 0 :(得分:3)

您需要创建一个变量并保持单击图像的id。当用户单击其他图像时,首先根据变量中的id重置另一个图像,然后将变量值替换为当前单击图像的id。

答案 1 :(得分:1)

我假设您正在this tutorial中使用ImageAdapter类的修改后的副本,并且您发布的代码位于该类的getView(int,View,ViewGroup)方法中。

您保存所选图像的索引,但不保存视图本身。您需要保存两者才能还原旧图像,如下所示:

private int selectedPosition = -1;
private ImageView selectedView = null;
...
public View getView(int position, View convertView, ViewGroup parent) {
    // I don't understand what this line is about??
    ImageView iv = (ImageView) v.findViewById(R.id.icon_image);
    // Why not something like this??
    // ImageView iv = new ImageView(mContext);

    iv.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View view) {
            // Set the selected image for the ImageView just pressed.
            iv.setImageResource(cThumbIds[position]);

            // Revert to the original image for the ImageView previously
            // pressed.
            if (selectedPosition != -1) {
                selectedView.setImageResource(mThumbIds[selectedPosition]);
            }

            // Save the position and ImageView just pressed so it can be
            // reverted next time an ImageView is pressed
            selectedPosition = position;
            selectedView = (ImageView) view;
        }
    });

    iv.setImageResource(mThumbIds[position]);
    return (iv);
}

我对行ImageView iv = (ImageView) v.findViewById(R.id.icon_image);感到有点困惑(正如我在代码示例中提到的那样)。