当ListView item中含有Edittext 时,存在Edittext 获取不到焦点的情况,若像达到既能响应Item点击事件,Edittext 又能编辑,则提供一解决方案,仅供参考:一是为listview item 设置onTouch 事件,将item 中能获取焦点的子组件暂时失去焦点,二是设置item中子组件的onTouch事件,在事件处理中让其能重新获取焦点,三是在listview 所在Activity 设置android:windowSoftInputMode="adjustPan" ,以便调起输入法。。
如:
public View getView(final int item, View view, ViewGroup arg2) {
ViewHolder holder = null;//
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.listitem,null);
//textview
holder.tv = (TextView) view.findViewById(R.id.tv);
//edittext
holder.et = (EditText) view.findViewById(R.id.et);
view.setTag(holder);
} else {
// 取出tag
holder = (ViewHolder) view.getTag();
}
holder.tv.setText("第" + item + "项");
view.setOnTouchListener(this);
holder.et.setOnTouchListener(this);
return view;
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if( v instanceof EditText){
EditText et = (EditText)v;
et.setFocusable(true);
et.setFocusableInTouchMode(true);
} else {
ViewHolder holder = (ViewHolder) v.getTag();
holder.et.setFocusable(false);
holder.et.setFocusableInTouchMode(false);
}
return false;
}