Alterar ImageView em um GridView programaticamente

Eu configurei uma grade de ImageViews com sobreposições TextView. Meu código do ImageAdapter é o seguinte:

    public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView;
    View grid;
    LayoutInflater inflater = (LayoutInflater) mContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    if (convertView == null) {
        grid = new View(mContext);
        grid = inflater.inflate(R.layout.image, null);
        TextView textView = (TextView)grid.findViewById(R.id.mastery_text);

        imageView = (ImageView)grid.findViewById(R.id.mastery_image);
        grid.setLayoutParams(new GridView.LayoutParams(150, 150));
        imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
        grid.setPadding(8, 8, 8, 8);
        grid.setBackgroundResource(R.color.orange);

        imageView.setImageResource(mThumbIds[position]);            

    } else {
        grid = (View) convertView;
    }

    return grid;
}

O layout XML correspondente para o meu ImageAdapter é este:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/layout_practitioner" 
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <ImageView 
        android:id="@+id/mastery_image"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scaleType="centerCrop"
    />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:layout_gravity="bottom"
        android:background="#bbffffff"
        android:focusable="false"
        android:focusableInTouchMode="false" >

        <TextView android:id="@+id/mastery_text"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="0dp"
            android:textColor="@color/black"
            android:gravity="bottom|center"
            android:textSize="12sp"
            android:textAllCaps="true"
            android:paddingBottom="0dp"
            android:text="3/3"
            />

    </LinearLayout>
</FrameLayout>

Código XML para o meu GridView (classe de atividade):

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <GridView xmlns:android="http://schemas.android.com/apk/res/android"
        android:paddingTop="@dimen/activity_vertical_margin"
        android:paddingLeft="@dimen/activity_horizontal_margin"
        android:paddingRight="@dimen/activity_horizontal_margin"
        android:id="@+id/gridview"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:numColumns="4"
        android:verticalSpacing="10dp"
        android:horizontalSpacing="10dp"
        android:stretchMode="columnWidth"
        android:gravity="center" />

</LinearLayout>

Aqui está o método onCreate da minha atividade principal:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_masteries);

    GridView gridview = (GridView) findViewById(R.id.gridview);

    ImageAdapter adapter = new ImageAdapter(this);
    gridview.setAdapter(adapter);

    gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v,
                                int position, long id) {
            Toast.makeText(Masteries.this, "" + position,
                    Toast.LENGTH_SHORT).show();
        }
    });
}

Quero, depois de inicializar a grade com as imagens, alterar um dos ImageViews da minha classe de atividade, dada sua posição na grade. Como eu faria isso?

Eu estounão pedindo para alterar a imagem em resposta a um onItemClick. Desde já, obrigado!

Edit: Estou pensando em criar umchangeImage(int position, int imageId) no meu adaptador e chamando isso da minha classe de atividade. Essa é a abordagem correta?

questionAnswers(2)

yourAnswerToTheQuestion