Android开发ListView中包含EditText控件遇到的问题
2016-10-10 17:12
369 查看
通常如果listview中的item内容有edittext的时候,会出现很多问题。
主要有1.点击弹出编辑框,edittext会失去焦点。
2.输入内容后,向下滑动因为listview的item重用机制,你在上面输入的内容下面的item也会显示。
3.输入内容后,向下滑动再拉回来原来的数据消失。
4.在需要为edittext设置监听时会出现卡的现象
下面我们直接代码来说:
viewHolder.editText.setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_UP){
index=position;
}
return false;
}
});
viewHolder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {
//设置焦点监听,当获取到焦点的时候才给它设置内容变化监听解决卡的问题
@Override
public void onFocusChange(View v, boolean hasFocus) {
EditText et=(EditText) v;
if(mWatcher==null){
mWatcher=new myWatcher();
}
if(hasFocus){
et.addTextChangedListener(mWatcher);//设置edittext内容监听
}else {
et.removeTextChangedListener(mWatcher);
}
}
});
viewHolder.editText.clearFocus();//防止点击以后弹出键盘,重新getview导致的焦点丢失
if (index != -1 && index == position) {
// 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。
viewHolder.editText.requestFocus();
}
viewHolder.editText.setText(text[position]);//这一定要放在clearFocus()之后,否则最后输入的内容在拉回来时会消失
viewHolder.editText.setSelection(viewHolder.editText.getText().length());
// viewHolder.editText.addTextChangedListener(new myWatcher());//放弃直接的为每一个edittext设置监听内容变化
class myWatcher implements TextWatcher{
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
text[index]=s.toString();//为输入的位置内容设置数组管理器,防止item重用机制导致的上下内容一样的问题
}
}
源码地址:http://download.csdn.net/detail/u013377714/9370685
主要有1.点击弹出编辑框,edittext会失去焦点。
2.输入内容后,向下滑动因为listview的item重用机制,你在上面输入的内容下面的item也会显示。
3.输入内容后,向下滑动再拉回来原来的数据消失。
4.在需要为edittext设置监听时会出现卡的现象
下面我们直接代码来说:
viewHolder.editText.setOnTouchListener(new OnTouchListener() {
@SuppressLint("ClickableViewAccessibility")
@Override
public boolean onTouch(View v, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction()==MotionEvent.ACTION_UP){
index=position;
}
return false;
}
});
viewHolder.editText.setOnFocusChangeListener(new OnFocusChangeListener() {
//设置焦点监听,当获取到焦点的时候才给它设置内容变化监听解决卡的问题
@Override
public void onFocusChange(View v, boolean hasFocus) {
EditText et=(EditText) v;
if(mWatcher==null){
mWatcher=new myWatcher();
}
if(hasFocus){
et.addTextChangedListener(mWatcher);//设置edittext内容监听
}else {
et.removeTextChangedListener(mWatcher);
}
}
});
viewHolder.editText.clearFocus();//防止点击以后弹出键盘,重新getview导致的焦点丢失
if (index != -1 && index == position) {
// 如果当前的行下标和点击事件中保存的index一致,手动为EditText设置焦点。
viewHolder.editText.requestFocus();
}
viewHolder.editText.setText(text[position]);//这一定要放在clearFocus()之后,否则最后输入的内容在拉回来时会消失
viewHolder.editText.setSelection(viewHolder.editText.getText().length());
// viewHolder.editText.addTextChangedListener(new myWatcher());//放弃直接的为每一个edittext设置监听内容变化
class myWatcher implements TextWatcher{
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before,
int count) {
// TODO Auto-generated method stub
}
@Override
public void afterTextChanged(Editable s) {
text[index]=s.toString();//为输入的位置内容设置数组管理器,防止item重用机制导致的上下内容一样的问题
}
}
源码地址:http://download.csdn.net/detail/u013377714/9370685
相关文章推荐
- android开发过程中遇到的一些问题(包括自定义ProgressBar, Intent, Animation, ListView, RadioButton)
- 工作中遇到的listview相关问题(二)——item包含EditText
- Android实际开发问题03------ListView中添加Edittext
- 自定义ListView item包含checkbox实现单选记录自己开发是遇到的问题
- Android:ListView中包含EditText 文字冲突 复用 焦点 软键盘问题
- android中listview包含edittext时,获取焦点问题
- Android 开发中遇到的问题,ListView优先级、搜索框的实现。。。
- android开发中遇到一个图片轮播和listview的问题
- android 2.3.4 在平板上开发遇到的问题
- 用Eclipse开发Android时遇到的一个小问题
- Android综合下载系统的开发步骤以及遇到问题
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- android开发遇到的问题
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- 【Android游戏开发二十三】自定义ListView【通用】适配器并实现监听控件!
- Android 开发遇到的一些问题整理
- android开发环境搭建遇到的问题(MyEclipse8.5+android sdk2.3+ADT-8.0.1
- Windows7部署Android开发环境傻瓜式教程(遇到的一些问题)
- Android将联系人读取到LISTVIEW中遇到的问题!
- android开发中遇到的2个路径问题和html解析问题