我的Layout中有一个Listview,我希望从ListView获取所有EditText的值,无论它是否在屏幕上可见。
我是按照以下方式进行的:
if(isset($_POST['to'])){
// send email
} else {
die("forbidden! you can not open this file explicitly!")
}
使用childView2我得到了可见的EditText的正确值,但是使用ChildView1我总是将EditText的值变为空,长度始终为0.
我也尝试过使用
String Quantity = "";
for (int i=0; i<lv_order.getAdapter().getCount(); i++) {
View childView = lv_order.getAdapter().getView(i,null,lv_order);
View childView2 = getViewByPosition(i,lv_order);
EditText editText = (EditText) childView.findViewById(R.id.layout_model_ETQuantity);
TextView textView = (TextView) childView.findViewById(R.id.layout_model_Model);
EditText editText1 = (EditText) childView2.findViewById(R.id.layout_model_ETQuantity);
if(editText.length() > 0) {
Quantity = Quantity + " " + editText.getText().toString();
}
}
public View getViewByPosition(int position, ListView listView) {
final int firstListItemPosition = listView.getFirstVisiblePosition();
final int lastListItemPosition = firstListItemPosition + listView.getChildCount() - 1;
if (position < firstListItemPosition || position > lastListItemPosition ) {
return listView.getAdapter().getView(position, null, listView);
} else {
final int childIndex = position - firstListItemPosition;
return listView.getChildAt(childIndex);
}
}
在for循环中但是当应用程序尝试获取不可见的ListView子级的值时应用程序崩溃。
更新
适配器类
View childView = lv_order.getChildAt(i);