Android: Atualizar imagem no evento GridView on touch no adaptador

eu tenho umGridView e adaptador conectado a ele. O adaptador preenche imagens na grade. Eu arrumeisetOnTouchLister paraGridView no meuActivity e implementado apenas no adaptador. No adaptador eu tenho umInteger[] imageIDs que contém identificações de recursos de todas as imagens adicionadas e umArrayList<ImageSourceObject> imgObjsArr que se estendeImageView & tem outras propriedades definidas.

AgoraonTouch(), Quero mudar a imagem da imagem selecionada para outra. Aqui está o meu código: Instalando o adaptador de grade emActivity noonCreate :

        // Set Objects in Game View
    gameView = (GridView) this.findViewById(R.id.game_gridView);
    gameObjAdapter = new GameObjectsAdapter(this, R.id.game_gridView, null);
    gameView.setAdapter(gameObjAdapter);

ADAPTADOR:

public class GameObjectsAdapter extends BaseAdapter implements OnTouchListener {
    super();
    mContext = c;
    this.layoutResourceId = layoutResourceId;
    objects = data;
    gridViewResAdap = (GridView) mContext.findViewById(this.layoutResourceId);
    createObjectsArray();
    Log.d("GOA", "Created Objects Array");
}

@Override
public View getView(int position, View convertView, ViewGroup parent) {

    ImageSourceObject imgView;

    if (convertView == null) {
        imgView = new ImageSourceObject(mContext);
        imgView.setLayoutParams(new GridView.LayoutParams(20, 20));
        imgView.getScaleType();
        imgView.setScaleType(ScaleType.FIT_XY);
        imgView.setPadding(0, 0, 0, 0);
    } else {
        imgView = (ImageSourceObject) convertView;
    }

    // Chk status of touched of imgView & set image accordingly
    if (imgView.isTouched())
        imgView.setImage(R.drawable.droid_touched2);
    else 
        imgView.setImage(imageIds[position]);

    return imgView;
}   

@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub

    int action = event.getActionMasked();
    float currentXPos = event.getX();
    float currentYPos = event.getY();
    int position = gridViewResAdap.pointToPosition((int)currentXPos, (int) currentYPos);

    // Key was Pressed Here
    if (action == MotionEvent.ACTION_UP) {
        if (position > 0) {
            // Get the object which is clicked
            ImageSourceObject isb = this.imgObjsArr.get(position);
            Log.d("GA", " Postion ID " + isb.getId() + " [] ID : " + imageIds[position]);

            // Change the status of touched & set image
            isb.setTouched(true);
            isb.setImage(R.drawable.droid_touched2); 

            // Update the ArrayList & Integer[] with this updated obj 
            this.imgObjsArr.set(position, isb);
            imageIds[position] = R.drawable.droid_touched2;
            Log.d("ISB", "++++ Object ID : " + isb.getId() + " [] ID : " + imageIds[position] + " ISB Touched :" + isb.isTouched());

            Toast.makeText(mContext, "Postion Pressed : " + (position+1), 
                Toast.LENGTH_SHORT).show();

            //this.gridViewResAdap.invalidate();
        }

        return true;
    }

    return false;
}

Registros:

02-19 15:19:11.615: D/GA(2046):  Postion ID 2130837556 [] ID : 2130837556
02-19 15:19:11.617: D/ISB(2046): ++++ Object ID : 2130837559 [] ID : 2130837559 ISB Touched :true

Os logs dizem que o objeto emInteger[] & ArrayList ambos são atualizados e possuem valores corretos. Depois de tudo isso, também a imagem não é atualizada na tela. ogridViewResAdap também é o objeto da grade que é passado da atividade. Eu tentei ligarinvalidate() nele também, mas ainda não há resultados. Como no meugetView(), Estou usandoimageIDs, então eu também mantive isso atualizado.

ImageSourceObject:

public class ImageSourceObject extends ImageView {

public void setImage(int resourceId) {
    super.setImageResource(resourceId);
    this.setId(resourceId);
}

Além disso,onTouch() dá erro ao ligaronPerformClick(), Não sei para onde ligar e por que ligar. Eu não tenho implementadoonClickListener no adaptador. O que pode ser feito neste caso e o que escreveronClickListener quando as coisas são manejadasonTouch().

Você pode me ajudar a saber por que o objeto de imagem não está sendo atualizado e onde estou errado? Eu pensei que tinha que atualizar a grade, então também chamado invalidate (), mas sem resultados.

Qualquer ajuda é muito apreciada.

obrigado

questionAnswers(2)

yourAnswerToTheQuestion