在 AlertDialog 正按钮上更改 textView 的可见性
Posted
技术标签:
【中文标题】在 AlertDialog 正按钮上更改 textView 的可见性【英文标题】:Change visibility of textView on AlertDialog positive button 【发布时间】:2014-12-14 09:00:01 【问题描述】:好的,所以我没有足够的标题空间来解释这一点,但我有一个带有自定义适配器的 ListView,在子视图中我有一个 textview。当我显示警报对话框并单击肯定按钮时,我试图更改该文本视图的可见性,并且我的代码没有更改可见性。
alert.setPositiveButton("Send", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
EditText editMsg = (EditText)view.findViewById(R.id.editMsg);
String msg = editMsg.getText().toString().trim();
if (!msg.isEmpty())
// show message test
if (name.equals("Contact 0"))
View v = listView.getAdapter().getView(0, null, null);
TextView tvMsg = (TextView)v.findViewById(R.id.tvMsg);
tvMsg.setText(msg);
tvMsg.setVisibility(View.VISIBLE);
);
是的,代码正在正确执行,是的,我尝试过 setText 和 adapter.notifyDataSetChanged,然后在 getText > 0 时更改 adapter.getView 中的可见性
似乎一切都是正确的,它的 v 是正确的视图,我可以阅读其他子视图来确认它的正确性,setText 工作但 setVisibility 不是?为什么我不能更改可见性?
【问题讨论】:
到底是什么问题??您的文字现在是否可见或者// 首先,检查您的文本颜色和列表视图背景颜色是否不同.. 问题是它不会变得可见。颜色不是问题。不过感谢您的回复。 您必须在适配器的setVisibility()
中添加getView()
。
我已经尝试过了(如前所述)。我还可以在列表 view.onitemclicked 事件的子视图中更改线性布局的可见性......我对此感到非常困惑。
【参考方案1】:
我想通了。似乎问题在于调用 listView.getAdapter().getView()。
替换为 listView.getChildAt(int pos) 一切正常。
【讨论】:
【参考方案2】:因为,当适配器调用 xml 文件再次初始化时,可能 TextView 隐藏在您的 xml 文件中。所以,我的建议是:
放一个全局变量,比如说global_var;
将以下代码写入您的适配器 getView() 方法。
if(global_var)
tvMsg.setVisibility(View.VISIBLE);
else
tvMsg.setVisibility(View.GONE);
在这段代码中:
alert.setPositiveButton("Send", new DialogInterface.OnClickListener()
@Override
public void onClick(DialogInterface dialog, int which)
EditText editMsg = (EditText)view.findViewById(R.id.editMsg);
String msg = editMsg.getText().toString().trim();
if (!msg.isEmpty())
// show message test
if (name.equals("Contact 0"))
.....
.....
global_var = true// or something;
);
最后这样称呼:
adapter.notifyDataSetChanged();
我认为这会起作用..
【讨论】:
我试过这个。不工作。我忘了提到我正在尝试以相对布局将此文本视图覆盖在图像视图上。也许这就是问题所在,今天将进行更多测试。以上是关于在 AlertDialog 正按钮上更改 textView 的可见性的主要内容,如果未能解决你的问题,请参考以下文章
Android:如何设置AlertDialog的宽度和高度,以及AlertDialog风格的按钮?