如何从弹出菜单启用editText?
问题描述:
我有一个editText的列表视图,当我在这些editText中显示数据时,我将editText设置为禁用,之后我创建了一个弹出菜单,其中我编辑了项目以修改数据,所以当我点击它时,我启用了editText 。 我尝试了关于启用/禁用edittext的所有解决方案。但它不起作用。 :如何从弹出菜单启用editText?
我的屏幕的ListView:
来源:
public View getView(int position, View convertView, final ViewGroup parent) {
final int pos = position;
if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
if (convertView == null)
convertView = inflater.inflate(R.layout.feed_item, null);
name = (EditText) convertView.findViewById(R.id.name_book_display);
statusMsg = (EditText) convertView.findViewById(R.id.desc_display);
prix = (EditText) convertView.findViewById(R.id.prix_display);
disableEditText(name);
disableEditText(statusMsg);
disableEditText(prix);
popupMenu.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
IconizedMenu popup = new IconizedMenu(parent.getContext(), view);
MenuInflater inflater = popup.getMenuInflater();
inflater.inflate(R.menu.poupup_menu, popup.getMenu());
popup.setOnMenuItemClickListener(new IconizedMenu.OnMenuItemClickListener() {
@Override
public boolean onMenuItemClick(MenuItem item) {
switch (item.getItemId()) {
case R.id.update_book:
enableEditText(name);
enableEditText(statusMsg);
enableEditText(prix);
updateBtn.setVisibility(View.VISIBLE);
return true;
case R.id.add_book_to_favoris:
return true;
case R.id.delete_book:
return true;
default:
return false;
}
}
}
);
popup.show();
}
});
return convertView;
}
private void disableEditText(EditText editText) {
editText.setFocusable(false);
editText.setEnabled(false);
editText.setCursorVisible(false);
editText.setKeyListener(null);
editText.setBackgroundColor(Color.TRANSPARENT);
}
private void enableEditText(EditText editText) {
editText.setFocusable(true);
editText.setEnabled(true);
editText.setCursorVisible(true);
editText.setKeyListener(listener);
}
答
editText.setFocusable(true);
editText.setEnabled(true);
editText.setCursorVisible(true);
editText.setKeyListener(editText.getKeyListener());
+0
它不工作,我更新与其中一个字段的图像的问题,请检查它。 – Amal
答
使用editText.setFocusableInTouchMode(true)
,而不是editText.setFocusable(true)
。
更新您的enableEditText()
如下方法:
private void enableEditText(EditText editText) {
editText.setEnabled(true);
editText.setCursorVisible(true);
editText.setFocusableInTouchMode(true);
editText.setInputType(InputType.TYPE_CLASS_TEXT);
}
+0
此外,它不工作,我更新问题与debeug域之一的图像,请检查它 – Amal
尝试登录了'disableEditText'和'enableEditText'只是为了看看他们被称为 –
@OmarAlHalabi检查我调试它的更新,它们被称为 – Amal