我正在尝试无效检查EditText(这应该足够简单)但是每次我将文本输入到我的两个ET中时 - 它们总是返回为空:“”并且它们不应该(如果它们中有文本) 。
我已经查看了与此相关的其他几篇SO文章,并且没有一个修复程序似乎解决了这个问题。
在这个例子中,有人能发现我可能做错了什么吗?
Java类:
...
public void doneClicked(View v) throws JSONException {
LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v1 = li.inflate(R.layout.profile_notification_settings_list_edit, null);
final EditText label = (EditText) v1.findViewById(R.id.emaillabel);
final EditText value = (EditText) v1.findViewById(R.id.emailvalue);
String sValue = value.getText().toString();
if (sValue.matches("")) {
Toast.makeText(this, "You did not enter a value", Toast.LENGTH_SHORT).show();
return;
}
String sLabel = label.getText().toString();
if (sLabel.matches("")) {
Toast.makeText(this, "You did not enter a label", Toast.LENGTH_SHORT).show();
return;
}
...
适配器:
@Override
public View getView(final int i, View view, ViewGroup viewGroup) {
view = inflater.inflate(R.layout.profile_notification_settings_list_edit, null);
EditText value = (EditText) view.findViewById(R.id.emailvalue);
value.setHint("Value");
value.setText(valueList[i]);
EditText label = (EditText) view.findViewById(R.id.emaillabel);
if (labelList != null)
label.setHint("Label");
label.setText(labelList[i]);
Java类:
适配器:
答案 0 :(得分:3)
因为每次点击你都会创建一个与屏幕上当前显示的视图无关的新view
public void doneClicked(View v) throws JSONException {
// don't inflate new views
LayoutInflater li = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View v1 = li.inflate(R.layout.profile_notification_settings_list_edit, null);
final EditText label = (EditText) v1.findViewById(R.id.emaillabel);
final EditText value = (EditText) v1.findViewById(R.id.emailvalue);
// ... code
注意:您无法从rowItemVies
直接从ListView
获取数据,因此您需要在适配器类中添加方法以获取所选的位置使用rowView
获取yourListView.getChildAt(position)
并进一步从rowView
答案 1 :(得分:-1)
使用 sValue.trim()。equals("")而不是sValue.matches("")