可扩展的列表,在android中的grouplayput上有编辑文本

时间:2013-02-08 10:45:19

标签: android android-edittext expandablelistview

我创建了一个可扩展的ListView,我在其中创建了一个自定义组布局。

在组布局上,我在右侧创建了一个EditText。每当我在EditText上放置文本并单击可扩展列表时,列表就不会展开/折叠。

当我对EditText执行focusable false时,列表会展开/折叠。

如何解决这个问题?请建议我。

2 个答案:

答案 0 :(得分:1)

编辑文本本身就是一个专注的组件。如果我们放在列表视图内,可扩展列表,则列表单击并折叠展开属性将不起作用。 使用EditText,Button,ImageButton等时出现同样的问题,

所以你需要使用:

1.在可扩展列表中使用以下属性:

 android:descendantFocusability="blocksDescendants"

或 2.在EditText中使用以下属性

android:focusable="false"

答案 1 :(得分:1)

今天,我已经在可扩展的List和N-level可扩展列表视图中解决了上述问题。 我附上了代码。 首先,我在您的活动/适配器上设置了可编辑的虚假编辑文本,而不是在EditText的xml上。

EditText.setFocusable(false);

其次,我使用了触摸监听器,因为在这里我设置了可编辑文本的焦点。所以我可以在编辑框上轻松输入文字。

EditText.setOnTouchListener(new OnTouchListener() {

            @Override
            public boolean onTouch(View v, MotionEvent event) {
                EditText.setFocusableInTouchMode(true);
                return false;
            }
        });

之后,我使用了KeyListener,因为我在这里根据位置/组位置获取数据并在哈希映射上设置值。因此,无论何时单击2级或N级可扩展列表视图数据都不会更改这对于可扩展列表视图非常重要。完成按键我隐藏键盘。并设置编辑文本的可聚焦错误,以便我可以自由扩展/折叠。

EditText.setOnKeyListener(new OnKeyListener() {
            String editValue;
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {
                if (event.getKeyCode() == KeyEvent.KEYCODE_ENTER)
                {
                    editValue=groupHolder.numberEdit.getText().toString().trim();
                    EditText.setFocusable(false);
                    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
                    imm.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY,0);
                }
                setEditValueHashMap.put(groupPosition, editValue);
                return false;
            }
        });