Я использую пользовательский ListView
с Title
и Subtitle
, где вы можете прочитать краткое описание предмета.Изменение динамических элементов в спискеView
Для каждого элемента в списке, я показываю AlertDialog
, чтобы выбрать вариант (по-разному для каждого случая). Когда опция выбрана, я хочу изменить Subtitle для опции, выбранной пользователем.
Это то, что я пробовал:
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
switch(position){
case 0:
final CharSequence[] alertText1 = {"Area 1", "Area 2", "Area 3"};
ventana.setTitle("Choose an Area");
ventana.setItems(alertText1, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
TextView subTitulo = (TextView) findViewById(R.id.subTitulo);
subTitulo.setText(alertText1[item]);
}
});
ventana.show();
break;
case 1:
final CharSequence[] alertText2 = {"1", "2", "3", "5", "10", "20", "60"};
ventana.setTitle("Max. duration");
ventana.setItems(alertText2, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
TextView subTitulo = (TextView) findViewById(R.id.subTitulo);
subTitulo.setText(alertText2[item]);
}
});
ventana.show();
break;
case 2:
final CharSequence[] alertText3 = {"3", "5", "10", "20", "30", "60"};
ventana.setTitle("Time between events");
ventana.setItems(alertText3, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int item) {
TextView subTitulo = (TextView) findViewById(R.id.subTitulo);
subTitulo.setText(alertText3[item]);
}
});
ventana.show();
break;
Для первого элемента списка он прекрасно работает, когда я выбираю вариант, субтитры заменяются на этот вариант, но когда я делаю выбор в AlertDialog
s других двух элементов, выбранная опция заменяет субтитры первого элемента!
Любая идея, как я могу это исправить?
реальным ответом является использование лучшего адаптера для заполнения списка, а затем обновление адаптера при щелчке. –
Можете ли вы объяснить себе немного больше? В этом коде listView уже заполнен. «ventana» определяется как AlertDialog.Builder, и проблема заключалась в изменении содержимого listView в зависимости от выбора alertDialog. Может быть, вы можете мне рассказать об этом адаптере? : D – Kitinz