读取文件略:
对与listView要重写一个自己的adapter,其中edittext要设置OnTouch监听及TextWatcher来获取更改后的值
public View getView(final int position, View convertView, ViewGroup parent) {
//TODO Auto-generated method stub
//取得layout
LayoutInflater factory = LayoutInflater.from(this.context);
View view =factory.inflate(R.layout.qw_appserver_item,null);
HashMap map = data.get(position);
tv = (TextView)view.findViewById(R.id.qw_appserver_textview);
//设置值
tv.setText((String)map.get("id"));
et = (EditText)view.findViewById(R.id.qw_appserver_editview);
et.setText((String)map.get("value"));
et.setTag(position);
//设置OnTouchListener监听,判断是否取到了当前EditText的焦点
et.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
System.out.println("--et ontouchlis---");
if (event.getAction() == MotionEvent.ACTION_UP) {
index = (Integer) v.getTag();
System.out.println("--et index---"+index);
}
return false;
}
});
//失去焦点
et.clearFocus();
if (index != -1 && index == position) {
//获取焦点
et.requestFocus();
}
//内部类,当editText的值改变时把值取到放到对应的list上,
class MyTextWatcher implements TextWatcher {
public MyTextWatcher() {
}
@Override
public void onTextChanged(CharSequence s, int start,
int before, int count) {
}
@Override
public void beforeTextChanged(CharSequence s, int start,
int count, int after) {
}
@Override
public void afterTextChanged(Editable s) {
if(index != -1 && index == position){
if (s != null && !"".equals(s.toString())) {
//data数据源,能在activity中取到变化过的data的值
data.get(index).put("value",
s.toString());// 当EditText数据发生改变的时候存到data变量中
//System.out.println("--s.tostring--"+s.toString()+" position:"+index);
}
}else{
if (s != null && !"".equals(s.toString())) {
int position = (Integer) et.getTag();
data.get(position).put("value",
s.toString());// 当EditText数据发生改变的时候存到data变量中
//System.out.println("--s.tostring--"+s.toString()+" position:"+position);
}
}
}
}
et.addTextChangedListener(new MyTextWatcher());
return view;
}