У меня есть один вопрос об enums в Java. Поэтому мне нужно заполнить свой Spinner Adapter значениями перечисления. Я знаю, что я могу переопределить метод toString внутри enum и использовать значения(), но в этом случае я пытаюсь добиться этого по-другому, потому что мне может потребоваться оставить toString() нетронутым.Получение значения enum getter not toString
У меня есть геттеры внутри перечислений, но я не могу их использовать в любом месте, и я не знаю почему. Было бы здорово, если бы кто-то мог указать мою ошибку и указания пойти дальше.
Я хочу заполнить свой счетчик кулаком по строке (speciesLabel
) моего Enum.
Когда я пытаюсь вызвать мой добытчик в адаптере, Android Студия говорит, что не существует такой метод вызвать
speciesSpinner.setAdapter(new ArrayAdapter<Species>(this,R.layout.row_default, Species.getSoeciesLabel()));
Species.java (Enum)
public enum Species {
HUMAN("Human", "Human description", 90),
GAND("Gand", "Gand description", 100);
private final String speciesLabel;
private final String speciesDescription;
private final int startingXp;
private Species(String speciesLabel, String speciesDescription, int startingXp) {
this.speciesLabel = speciesLabel;
this.speciesDescription = speciesDescription;
this.startingXp = startingXp;
}
public String getSpeciesLabel() {
return speciesLabel;
}
public String getSpeciesDescription() {
return speciesDescription;
}
public int getStartingXp() {
return startingXp;
}
@Override
public String toString() {
return getSpeciesLabel();
}
}
NewCharacterActivity.java
package com.example.androiddev_adam.starwarscharactercreator.views.activities;
import android.support.v7.app.ActionBarActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ProgressBar;
import android.widget.Spinner;
import com.example.androiddev_adam.starwarscharactercreator.R;
import com.example.androiddev_adam.starwarscharactercreator.model.Species;
public class NewCharacterActivity extends ActionBarActivity {
private EditText toonName;
private Spinner speciesSpinner;
private ProgressBar progressBar;
private ImageView speciesImage;
private Button btnNext;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_new_character);
toonName = (EditText)findViewById(R.id.toonNameEditText);
speciesSpinner = (Spinner)findViewById(R.id.speciesSpinner);
speciesSpinner.setAdapter(new ArrayAdapter<Species>(this,R.layout.row_default, Species.values()));
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_new_character, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
}
Вы заранее заранее
Не совсем понятно, чего вы не можете достичь. Вы заполняете адаптер счетчика со значениями ... где возникают геттеры? Куда идет toString? Вы действительно просто говорите о том, как значения должны отображаться *? Вы говорите, что не можете использовать свои геттеры где угодно - как вы пытаетесь их использовать, и что не так? –
Если я правильно вас понимаю, вам нужен подкласс '* Adapter'. 'ArrayAdapter' вызывает внутренне' toString() ', чтобы заполнить представления счетчика – Blackbelt
Я попытался объяснить, чего я хочу добиться. Извините за мой язык :) – Glorifind