array help

so this is working for the most part for me, but I cant seem to find a good spot to reset the arrays index.

byte dataPin = 0; // 74HC595 pin 14
byte latchPin = 1; // 74HC595 pin 12
byte clockPin = 2; // 74HC595 pin 11 

byte data; // storage for the current data byte
byte dataArray[8]; // define the data array

byte row; // storrage for the current row byte
byte rowArray[8]; // define the row array

byte index = 0;

void setup()
{
  pinMode(dataPin, OUTPUT); //pinmode setup
  pinMode(latchPin, OUTPUT);
  pinMode(clockPin, OUTPUT);

  // row registers... DO NOT CHANGE THESE!
  rowArray[0] = B01111111;
  rowArray[1] = B10111111;
  rowArray[2] = B11011111;
  rowArray[3] = B11101111;
  rowArray[4] = B11110111;
  rowArray[5] = B11111011;
  rowArray[6] = B11111101;
  rowArray[7] = B11111110;

  Serial.begin(9600);
}

void loop()
{
  serialListen();
  drawSprite();
}

void drawSprite()
{
  for(int j = 0; j < 8; j++){ // load the byte...
    data = dataArray[j]; // from the data array...
    row = rowArray[j]; // and the row array
    digitalWrite(latchPin, LOW); // ground the latch pin
    shiftOut(dataPin, clockPin, MSBFIRST, data); // shift out the data
    shiftOut(dataPin, clockPin, MSBFIRST, row); // shift out the row byte
    digitalWrite(latchPin, HIGH); // it's finished so bring the latch pin high
  }
} 

void serialListen()
{
  while (index < 8)
  {
    if (Serial.available())
    {
      dataArray[index++] = Serial.read();
    }
  }
}

my code draws to a LED matrix driven by 595s. when I insert an if statement in the code to check the index and reset it at it's peak either the display does nothing at all, or the display draws at the speed of the incoming serial data. I'm looking to load an array via serial and periodically update that same array with new bytes... this did get me a bit farther, but I'm really stuck this time.