ListView中嵌套EditText,直接在EditText输入,需要注意几点

来源:互联网 发布:命理师 知乎 编辑:程序博客网 时间:2024/05/22 08:13

ListView中嵌套EditText,一般情况下点击EditText获得焦点,输入内容,当item很多,需要滑屏时,页面会出现混乱。

避免混乱需要注意几点。

首先,在androidManifest.xml文件中修改ListView所在Activity的属性 android:windowSoftInputMode="adjustPan"

其次,在所写的Adapter的getView中,如果用到了ViewHolder(即将getView布局中需要用到的view放到一个ViewHolder对象中),不要出现如下红色代码部分

@Override
 public View getView(final int position, View convertView, ViewGroup parent) {
          View view = convertView;
         final ViewHolder holder;
        // if (view == null) {
    view = mLayoutInflater.inflate(
R.layout.布局文件, null);

// } else {
// holder = (ViewHolder) view.getTag();

// }

view.setTag(holder);

return view;

}

在getView中  EditText应该调用其addTextChangedListener方法,代码如下

holder.EditText对象.addTextChangedListener(new TextWatcher() {

@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}

@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}

@Override
public void afterTextChanged(Editable s) {

此处即监听EditText输入
String input= s.toString();
if(!TextUtils.isEmpty(input)){

}
}
});

另外需要注意一点,getView和Activity中Adapter实例中牵扯到EditText的地方,都不要调用notifyDataSetChanged()。其他View如Button则应该调用




原创粉丝点击