¿void es un tipo no válido para la variable onListItemClick?

He estado tratando de configurar un simple onClickListener en una actividad de Android que se extiende ListActivity.

Dentro de estas clases sobre el método de creación, creo un objeto giratorio que cuando un usuario selecciona un elemento, un arrayAdapter Se crea el elemento de la lista, dependiendo de lo que seleccionó el usuario (completado desde una solicitud de cursor). Esto se genera dentro de otro método dentro de la misma clase.

ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(this,
            R.layout.match_update_rows, R.id.player_name, playerItems);

    setListAdapter(playerAdapter);

Estoy intentando agregar un oyente de clics en esta nueva lista. Yo he añadido:

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent i = new Intent(this, PlayerFixtureScore.class);
        i.putExtra("RowId", id);
        startActivity(i);
    }

Sin embargo, aparece un error en el protected void onListItemClick la línea.

Multiple markers at this line
- Syntax error on token ")", ; expected
- Syntax error on token ",", ; expected
- Duplicate local variable position
- Syntax error on token ",", ; expected
- Duplicate local variable id
- Duplicate local variable l
- Syntax error on token "(", ; expected
- Duplicate local variable v
- Syntax error on token ",", ; expected
- void is an invalid type for the variable 
 onListItemClick

Además, si selecciono el onListItemClick línea, dice Eclipse 'void is an invalid type for the variable onListItemClick'?

Todo funciona si elimino el código del oyente de clics, simplemente no puedo averiguar cómo agregar el oyente en el arrayAdapter item para saber en qué elemento ha hecho clic el usuario. ¡Se agradece cualquier ayuda!

Según lo solicitado por MyD, aquí está la lista completa de clases: Gracias por sus rápidas respuestas. En respuesta a MByD, aquí está la lista completa de códigos para esta clase. ¡Cualquier sugerencia apreciada!

public class MatchUpdate extends ListActivity {
/** Called when the activity is first created. */
private int cursorCounter = 0;
private int spinnerSelected;
/** Set up the db for inital use */
DataBaseHelper myDbHelper = new DataBaseHelper(this);
Match match;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.match_update);

    try {
        myDbHelper.createDataBase();
    } catch (IOException ioe) {
        throw new Error("Unable to create database");
    }
    try {
        myDbHelper.openDataBase();
    } catch (SQLException sqle) {
        throw sqle;
    }

    // create a spinner for fixture selection
    Spinner fixtureSpin = (Spinner) findViewById(R.id.fixtures);

    // Get all fixtures for Spinner...
    Cursor cur = myDbHelper.getFixtures();

    // create match object for cursor results
    match = new Match(cur.getCount());

    // Populate match object with Cursor results
    for (cur.moveToFirst(); !cur.isAfterLast(); cur.moveToNext()) {
        match.setFixtureId(cursorCounter, cur.getInt(0));
        match.setHomeId(cursorCounter, cur.getInt(1));
        match.setHomeTeam(cursorCounter, cur.getString(2));
        match.setAwayId(cursorCounter, cur.getInt(3));
        match.setAwayTeam(cursorCounter, cur.getString(4));
        match.setDate(cursorCounter, cur.getString(5));
        cursorCounter++;
    }

    // Set up adapters for fixture spinner
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, match.getFixtureList());

    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // Set up fixture spinner
    fixtureSpin.setAdapter(adapter);

    // Set fixture spinner listener
    fixtureSpin.setOnItemSelectedListener(new MyOnItemSelectedListener());

}

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent, View view, int pos,
            long id) {
        spinnerSelected = parent.getSelectedItemPosition();
        updatePlayers(match);
    }

    public void onNothingSelected(AdapterView<?> parent) {
        // Do nothing.
    }
}

public void updatePlayers(Match thisMatch) {

    // Get players for selected fixture based on Spinner selection
    Cursor playerCur = myDbHelper.getFixturePlayers(
            thisMatch.getHomeId(spinnerSelected),
            thisMatch.getAwayId(spinnerSelected));

    // set up simple ArrayAdapter to hold player names
    String[] playerItems;
    playerItems = new String[playerCur.getCount()];
    int cnt = 0;

    // pull player data from cursor, into a simple array
    for (playerCur.moveToFirst(); !playerCur.isAfterLast(); playerCur
            .moveToNext()) {
        playerItems[cnt] = playerCur.getString(0);
        cnt++;

    }

    ArrayAdapter<String> playerAdapter = new ArrayAdapter<String>(this,
            R.layout.match_update_rows, R.id.player_name, playerItems);

    setListAdapter(playerAdapter);

    @Override
    protected void onListItemClick(ListView l, View v, int position, long id) {
        super.onListItemClick(l, v, position, id);
        Intent i = new Intent(this, PlayerFixtureScore.class);
        i.putExtra("RowId", id);
        startActivity(i);
    }
}

}

preguntado el 16 de mayo de 11 a las 20:05

proporcione el código (exacto) antes de este método -

Estoy de acuerdo con MByD: esto parece ser un problema con delimitadores desequilibrados (llaves o paréntesis) en algún lugar por encima de este código. -

2 Respuestas

Las declaraciones de métodos deben realizarse en el contexto de una definición de clase. Al intentar declarar un método dentro de otro método, se informa de errores similares a este.

contestado el 17 de mayo de 11 a las 00:05

Gracias a sus comentarios, he sacado el oyente de clics del método existente y ahora funciona correctamente. ¡Gracias por señalarme en la dirección correcta! - Joe

Recibí este error al intentar poner un OnClick manejador dentro de un MenuItem método, así que comprueba que estás fuera de un MenuItem.

Respondido 18 Feb 14, 19:02

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.