读取xml文件让其信息在listView上显示,并且listView上的每一条都能修改(用EditText)

来源:互联网 发布:传智播客java百度网盘 编辑:程序博客网 时间:2024/05/22 01:31

读取文件略:

对与listView要重写一个自己的adapter,其中edittext要设置OnTouch监听及TextWatcher来获取更改后的值

public View getView(final int position, View convertView, ViewGroup parent) {//TODO Auto-generated method stub//取得layoutLayoutInflater 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() {@Overridepublic 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() {}@Overridepublic void onTextChanged(CharSequence s, int start,int before, int count) {}@Overridepublic void beforeTextChanged(CharSequence s, int start,int count, int after) {}@Overridepublic 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;}






原创粉丝点击