读取文件略:
对与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 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;
- }