Android 在listview中禁用和启用edittext

Android 在listview中禁用和启用edittext,android,listview,android-edittext,Android,Listview,Android Edittext,我有一个列表视图,其中编辑文本在一个行布局中。我希望在创建时禁用EditText,并在“编辑”按钮上单击使其可编辑。更新文本后,用户可以单击“保存”按钮,使其再次不可编辑。在使相应的EditText可编辑时,我面临一个问题。它将被启用,但不会获得焦点,并且软键盘也不会出现。我做错什么了吗 //适配器类按钮单击:- holder.edit.setOnClickListener(新视图.OnClickListener(){ @凌驾 公共void onClick(视图v){ holder.count

我有一个
列表视图
,其中
编辑文本
在一个行布局中。我希望在创建时禁用
EditText
,并在“编辑”按钮上单击使其可编辑。更新文本后,用户可以单击“保存”按钮,使其再次不可编辑。在使相应的
EditText
可编辑时,我面临一个问题。它将被启用,但不会获得焦点,并且软键盘也不会出现。我做错什么了吗

//适配器类按钮单击:-
holder.edit.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
holder.count.setEnabled(真);
持有者.计数.设置输入类型(输入类型.类型\类别\编号);
holder.count.setFocusable(true);
holder.count.requestFocus();
InputMethodManager imm=(InputMethodManager)mContext.getSystemService(Context.INPUT\u方法\u服务);
imm.showSoftInput(holder.count,InputMethodManager.SHOW\u强制);
holder.edit.setVisibility(View.GONE);
holder.save.setVisibility(View.VISIBLE);
}
});
holder.save.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
holder.count.setEnabled(错误);
holder.edit.setVisibility(View.VISIBLE);
holder.save.setVisibility(View.GONE);
}
});
//行布局xml:-

替换这段代码

InputMethodManager imm = (InputMethodManager)mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
                imm.showSoftInput(holder.count, InputMethodManager.SHOW_FORCED);

在此之后,您必须将焦点放在列表中的另一个视图上。

试试看

holder.count.setClickable(true);

答案其实很简单。我只需要在清单的活动中添加android:WindowsOfInputMode=“StateAllwayShidden | adjustPan”
。之后,使用
setEnabled()
工作正常

您遇到的问题与我几天前为自己创建示例浏览器时遇到的问题相同。首先,不要使用setEditable(false),因为一旦删除编辑文本的焦点,即使您再次将其设置为focusable,它也不允许您键入

使用此选项而不是setEditable(false):

当您想启用textview时:

holder.count.setFocus(true);
holder.count.setFocusInTouchMode(true);
holder.count.setClickable(true);
holder.count.setCursorVisible(true);

如果有效,请在注释中告诉我…

您已经为适配器创建了一个列表。如果您使用的是bean类,则会在单击后添加一个新字段“edit”类型布尔值并设置true和false,并提供EditText此变量的可编辑性。我也尝试了
setClickable
,但当我触摸EditText以更改文本时,它将变得不可编辑@里斯蒙
holder.count.setFocus(false);
holder.count.setClickable(false);
holder.count.setCursorVisible(false);
holder.count.setFocus(true);
holder.count.setFocusInTouchMode(true);
holder.count.setClickable(true);
holder.count.setCursorVisible(true);