1.焦点问题:

xml布局中给listview设置一个descendantFocusability属性 

android:descendantFocusability="beforeDescendants"

beforeDescendants:viewgroup会优先其子类控件而获取到焦点 
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点 
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点

2. 数据混乱问题:

利用一个map去保存每个edittext的内容,然后在赋值的时候在从map中取出来,如果有就赋值,否则置空

事例代码:

public class FillInfoAdapter extends BaseAdapter {    public HashMap saveMap = new HashMap<>();    private Context context;    private ArrayList data;    public FillInfoAdapter(Context context, ArrayList data) {        this.context = context;        this.data = data;    }    public void setData(ArrayList data) {        this.data = data;        notifyDataSetChanged();    }    @Override    public int getCount() {        return data.size();    }    @Override    public Object getItem(int position) {        return data.get(position);    }    @Override    public long getItemId(int position) {        return position;    }    @Override    public View getView(int position, View convertView, ViewGroup parent) {        ViewHolder viewHolder;        if (convertView == null) {            convertView = LayoutInflater.from(context).inflate(R.layout.item_fillinfo, null);            viewHolder = new ViewHolder(convertView);            convertView.setTag(viewHolder);        } else {            viewHolder = (ViewHolder) convertView.getTag();        }        viewHolder.setData(position);        return convertView;    }    private class ViewHolder {        TextView tvTitle;        EditText etValue;        ViewHolder(View view) {            tvTitle = view.findViewById(R.id.tvTitle);            etValue = view.findViewById(R.id.etValue);            etValue.addTextChangedListener(new MyTextChangedListener(this, saveMap));        }        public void setData(int position) {            tvTitle.setText(data.get(position).getName());            etValue.setTag(position);//注意设置position            if (!TextUtils.isEmpty(saveMap.get(position))) {//不为空的时候 赋值给对应的edittext                etValue.setText(saveMap.get(position));            } else {//置空                etValue.getEditableText().clear();            }        }    }    public class MyTextChangedListener implements TextWatcher {        public ViewHolder holder;        public HashMap contents;        public MyTextChangedListener(ViewHolder holder, HashMap contents) {            this.holder = holder;            this.contents = contents;        }        @Override        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {        }        @Override        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {        }        @Override        public void afterTextChanged(Editable editable) {            if (holder != null && contents != null) {                int position = (int) holder.etValue.getTag();                contents.put(position, editable.toString());        //将edittext中的值赋值进data就可以在activity中data.get(i).getValue()获取输入框中的值                data.get(position).setValue(editable.toString());            }        }    }}


 

更多相关文章

  1. Android(安卓)文本输入框 获取焦点和设置光标到末尾
  2. Android(安卓)7.1 设置不支持遥控操作?
  3. Android音频数据传输
  4. Android(安卓)View系统源码分析(十)—— View.setVisibility(int v
  5. lighting sensor 部分分析
  6. Android(安卓)点击空白处,隐藏软键盘
  7. Android(安卓)GPUImage
  8. Listview中Button抢占焦点的解决方法
  9. OnItemClickListener不响应

随机推荐

  1. Android(安卓)中与 Touch 事件详解
  2. Spring开始关注移动应用开发,发布Spring M
  3. android通过webservice验证用户
  4. Android Animation初步
  5. UML详解:解析Android消息处理机制:Handler/
  6. android生命周期神器--Lifecycle
  7. 微信转发度最高的十大Android文章
  8. 第一章 Adnroid体系与系统架构
  9. android 使用JavaMail发送邮件
  10. 【Error】MPermissions引入错误 android-