情景还原:项目遇到这样一个问题:手机端要从服务器下载一个列表,手机端的使用者逐个检查无误后提交到服务器。如果服务器端没有数据,手机端就把表格完善,提交给服务器。
涉及到ListView和EditText和网络通信。下载表单和提交不在此文讨论之列。此文只涉及ListView+EditText的实现。
主要代码:initData
/**
* 初始化数据
* @param keyList
* @param valueList
*/
public void initData(List<String> keyList, List<String> valueList) {
this.keyList = keyList;
this.valueList = valueList;
}
setData
/**
* 设置editText里面的数据
* @param data
*/
public void setData(List<String> data) {
if (valueList != null) {
valueList.clear();
valueList = null;
this.valueList = data;
}
}
getData
<span style="white-space:pre"> </span>/**
* 得到EditText里面填写的数据
* @return
*/
public List<String> getData() {
return valueList;
}
最关键的
/**
* 经测试,这里使用OnFocusChangeListener效果能出来,
* 使用OnTouchListener+TextWatch没有调试成功,
* 如果有调试成功的可以告诉我一下,谢谢
*/
holder.mEditText.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
if (!hasFocus) {
final int position = v.getId();
final EditText editText = (EditText) v;
valueList.set(position, editText.getText().toString());
}
}
});
最后别忘了再manifest.xml里面的activity里面设置:
android:windowSoftInputMode="adjustPan"