Мне интересно, как я могу заполнить свой ListView на основе того, что выбрано на счетчике.
У меня есть счетчик, заполненный строковым массивом из strings.xml следующим образом:
<string-array name="genres">
<item>Action</item>
<item>Adventure</item>
<item>Animation</item>
<item>Comedy</item>
<item>Crime</item>
<item>Drama</item>
<item>Horror</item>
<item>Science Fiction</item>
<item>Thriller</item>
<item>Western</item>
</string-array>
У меня есть другие созданные массивы, и в зависимости от выбранного жанра фильма, я хочу заполнить просмотр списка этими массивами:
<string-array name="actionMovie">
<item>Die Hard</item>
<item>The Dark Knight</item>
</string-array>
<string-array name="adventureMovie">
<item>The Goonies</item>
<item>Back to the Future</item>
</string-array>
Я не совсем уверен, как поступить с этим. Вот некоторые фрагменты того, что я имею в своей основной деятельности.
Spinner spinGenre;
ListView lstViewMovies;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
spinGenre = (Spinner)findViewById(R.id.spinnerGenre);
lstViewMovies = (ListView) findViewById(R.id.listViewMovies);
Я использовал setOnItemSelectedListener для получения значения, которое было выбрано в этом счетчике. Просто для тестирования я использую всплывающие сообщения, показывающие, какое значение выбрано в счетчике, но оно работает неправильно. Так выглядит мой метод onItemSelected, может ли кто-нибудь указать мне правильное направление, чтобы заставить тосты работать (в целях тестирования), или даже показать мне, как я могу заставить ListView заполняться правильным массивом строк?
spinGenre.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
Object item = parent.getItemAtPosition(position).toString();
if (item.toString() == "Action") {
Toast.makeText(MainActivity.this, "Action Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Adventure") {
Toast.makeText(MainActivity.this, "Adventure Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Animation") {
Toast.makeText(MainActivity.this, "Aanimation Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Comedy") {
Toast.makeText(MainActivity.this, "Comedy Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Crime") {
Toast.makeText(MainActivity.this, "Crime Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Drama") {
Toast.makeText(MainActivity.this, "Drama Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Horror") {
Toast.makeText(MainActivity.this, "Horror Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Science Fiction") {
Toast.makeText(MainActivity.this, "Science Fiction Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Thriller") {
Toast.makeText(MainActivity.this, "Thriller Genre Selected!",
Toast.LENGTH_SHORT).show();
} else if (item.toString() == "Western") {
Toast.makeText(MainActivity.this, "Western Genre Selected!",
Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "Please select another genre!",
Toast.LENGTH_SHORT).show();
}
}