Deine Idee zur Auswertung ist m.E. völlig ok, nur verheddert man sich in den ganzen if's, wenn man die Ergenisse prüft.
Außerdem sollte man genau wissen, was man vergleicht - bei "==" benutzt du den Identitäts-Vergleich, der geht aber garantiert schief, weil du ja verschiedene Objekte (Strings) miteinander vergleichen willst. Um ganz sicher zu gehen, solltest du den String.equals() verwenden, also vom TextView erst getText() und dann mit toString() einen String machen.
Schreib dir doch einfach mal die Sachen so auf (Zeile 1: Felder 1-3, Zeile 2: Felder 4-6, Zeile 3: Felder 7-9),
dann sind Gewinner die Kombinationen 123, 456, 789, 147, 258, 369, 159, 357.
Nun diese Kombinationen in die richtigen Vergleiche für das if einbauen.
Ich kümmere mich im if übrigens nicht um den Spieler sondern nur um den Erfolg - gewonnen hat der letzte, der gesetzt hat, und das kannst du dann berechnen (hier 0 oder 1) .
Das If könnte dann ungefähr so aussehen (hier nur für 123 -> 1 nicht leer && 1==2 && 1==2):
if ( ( textview1.getText().length() > 0 &&
textview1.getText().toString().equals(textview2.getText().toString()) &&
textview1.getText().toString().equals(textview3.getText().toString())
) || (
...
)
) {
int gewinner = spielzug % 2;
}
Viel Erfolg!