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

前端之家收集整理的这篇文章主要介绍了读取xml文件让其信息在listView上显示,并且listView上的每一条都能修改(用EditText)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

读取文件略:

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

  1. public View getView(final int position,View convertView,ViewGroup parent) {
  2. //TODO Auto-generated method stub
  3. //取得layout
  4. LayoutInflater factory = LayoutInflater.from(this.context);
  5. View view =factory.inflate(R.layout.qw_appserver_item,null);
  6. HashMap map = data.get(position);
  7. tv = (TextView)view.findViewById(R.id.qw_appserver_textview);
  8. //设置值
  9. tv.setText((String)map.get("id"));
  10. et = (EditText)view.findViewById(R.id.qw_appserver_editview);
  11. et.setText((String)map.get("value"));
  12. et.setTag(position);
  13. //设置OnTouchListener监听,判断是否取到了当前EditText的焦点
  14. et.setOnTouchListener(new OnTouchListener() {
  15.  
  16. @Override
  17. public boolean onTouch(View v,MotionEvent event) {
  18. System.out.println("--et ontouchlis---");
  19. if (event.getAction() == MotionEvent.ACTION_UP) {
  20. index = (Integer) v.getTag();
  21. System.out.println("--et index---"+index);
  22. }
  23. return false;
  24. }
  25. });
  26. //失去焦点
  27. et.clearFocus();
  28. if (index != -1 && index == position) {
  29. //获取焦点
  30. et.requestFocus();
  31. }
  32. //内部类,当editText的值改变时把值取到放到对应的list上,
  33. class MyTextWatcher implements TextWatcher {
  34. public MyTextWatcher() {
  35. }
  36.  
  37. @Override
  38. public void onTextChanged(CharSequence s,int start,int before,int count) {
  39. }
  40.  
  41. @Override
  42. public void beforeTextChanged(CharSequence s,int count,int after) {
  43. }
  44.  
  45. @Override
  46. public void afterTextChanged(Editable s) {
  47. if(index != -1 && index == position){
  48. if (s != null && !"".equals(s.toString())) {
  49. //data数据源,能在activity中取到变化过的data的值
  50. data.get(index).put("value",s.toString());// 当EditText数据发生改变的时候存到data变量中
  51. //System.out.println("--s.tostring--"+s.toString()+" position:"+index);
  52. }
  53. }else{
  54. if (s != null && !"".equals(s.toString())) {
  55. int position = (Integer) et.getTag();
  56. data.get(position).put("value",s.toString());// 当EditText数据发生改变的时候存到data变量中
  57. //System.out.println("--s.tostring--"+s.toString()+" position:"+position);
  58. }
  59. }
  60. }
  61. }
  62. et.addTextChangedListener(new MyTextWatcher());
  63. return view;
  64. }

猜你在找的XML相关文章