Obtenga los valores de los elementos de GridView

Estoy trabajando en un proyecto donde tengo una cuadrícula de TextViews de 5x5, digamos, y quiero verificar si una fila o columna completa tiene elementos iguales. Estoy usando una clase de Adaptador para inflar mi vista de cuadrícula con solo un elemento de vista de texto. Aquí está el código que he intentado pero parece que no puedo hacer que funcione:

 final int size = gridView.getCount(); //25
 int temp = 0;

    for (int i = 0; i < size; i++) {
        ViewGroup gridChild = (ViewGroup) gridView.getChildAt(i);
        childSize = gridChild.getChildCount();

        for (int j = 0; j < childSize; j++) {

            if (gridChild.getChildAt(j) instanceof TextView &&
                    ((TextView) gridChild.getChildAt(j)).getText().toString().equals("x")) {
                temp++;
            }

El problema es que cuando intenté depurar, el depurador mostró valores nulos para la variable childSize y no pude obtener el valor de getChildAt. Básicamente, lo que intento hacer es entrar en la declaración if. Además, esta es la primera vez que trabajo con ViewGroup calss y los métodos que llamo. Cualquier ayuda sería apreciada.

Editar: estoy buscando una manera de hacer esto fuera del método getView en la clase de adaptador y no en un método onClick también. (Las respuestas de ejemplo de código serían muy apreciadas). Además, la llamada al método getChildAt devuelve nulo, por lo que el código que he mostrado no funcionaría porque estoy asignando un valor nulo a gridChild.

Este es el onClick que uso para TextViews:

`

 public void numberFill(View view) {
        if (((TextView) view).getText().toString().isEmpty()) {
            ((TextView) view).setText(String.valueOf(numbCounter + 1));
            numbCounter++;
        }

        else if (!((TextView) view).getText().toString().isEmpty() && numbCounter >= 16) {
            ((TextView) view).setText("x");
        }
    }

Esta es mi clase de adaptador:

public class GridAdapter extends BaseAdapter {

    private final Context mContext;
    private  String[] numbers;


    public GridAdapter(Context context, String[] numbers) {
        this.mContext = context;
        this.numbers = numbers;
    }


    @Override
    public int getCount() {
        return numbers.length;
    }


    @Override
    public long getItemId(int position) {
        return 0;
    }


    @Override
    public Object getItem(int position) {
        return numbers[position];
        //return null;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater)
                mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

        View gridView;


        if (convertView == null) {

            gridView = new View(mContext);


            gridView = inflater.inflate(R.layout.textview_layout, null);


            TextView textView = (TextView) gridView.findViewById(R.id.cell);
            textView.setText(numbers[position]);

        } else {
            gridView = (View) convertView;
        }

        return gridView;
    }

}

numberFill reelaborado:

    public void numberFill(View view) {
    int index = (Integer) view.getTag();
    if (numbers[index].toString().isEmpty()) {
        numbers[index] = String.valueOf(numbCounter + 1);
        numbCounter++;
    }

    else if (!numbers[index].toString().isEmpty() && numbCounter >= 25) {
        numbers[index] = "x";
    }

    gridAdapter.notifyDataSetChanged();
}

`

Respuestas a la pregunta(1)

Su respuesta a la pregunta