我使用的是带有Title
和Subtitle
的自定义ListView
,您可以在其中阅读该项目的简要说明。
对于列表中的每个项目,我都显示一个 AlertDialog
来选择一个选项(每种情况都不同)。选择该选项后,我想更改用户选择的选项的副标题。
这是我试过的:
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;
对于列表中的第一项,它工作正常,当我选择一个选项时,副标题被该选项替换,但是当我在其他 2 项的 AlertDialog
中进行选择时, 所选选项将替换第一项的副标题!
知道如何解决这个问题吗?
最佳答案
由于没有人回答这个问题并且我找到了解决方案,我将在这里发布它以帮助最终可能面临相同或类似问题的其他人:D
我只是从每个案例中删除 TextView subTitulo = (TextView) findViewById(R.id.subTitulo);
并在切换开始之前添加它,但在 onClick 函数上“获取” View 参数(最终类型,是因为 Eclipse 警告我:P):final TextView subTitulo = (TextView) view.findViewById(R.id.subTitulo);
代码如下所示:
listview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
TextView subTitulo = (TextView) view.findViewById(R.id.subTitulo);
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) {
subTitulo.setText(alertText1[item]);
}
});
ventana.show();
break;
[...]
关于android - 动态更改 ListView 中的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3782279/