首页 文章

ExpandableListView中的EditTexts

提问于
浏览
4

嗨,我正在尝试创建一个显示ExpandableListView的活动,如图所示 .

当您单击该组时,它会展开并显示带有textview和editext的LinearLayout .

我知道的问题是,当点击EditText时它没有得到焦点,我必须点击它两次以使它获得焦点并显示键盘,然后当我输入文本时我最初看不到任何内容当我正在键入时,然后当我隐藏键盘时,EditText会更新我输入的文本

我尝试将android:descendantFocusability =“afterDescendants”添加到expandableListVie布局,但行为是相同的 .

任何的想法??或任何其他方式我可以实现这种布局??

Expandable ListView with EditText

4 回答

  • 1

    将此添加到活动中android:name之后的清单中

    android:windowSoftInputMode="adjustPan"
    
  • 6

    我不知道如何解决聚焦问题,但我知道为什么你必须折叠并展开组以查看editText中的文本 . 除非您滚动或执行诸如展开和折叠列表视图之类的操作,否则列表视图不会刷新 . 因此,我能想到解决此问题的最佳方法是创建一个字符串列表,该列表将成为listview中editTexts的值 . 然后为每个editTexts创建一个onKeyClick()侦听器并执行以下操作:

    editText1.setOnKeyListener(new EditText.OnKeyListener()
    {
        public boolean onKey(View editText, int keyCode, KeyEvent keyEvent)
        {
            // Get the position of the item somehow
            int position = 4;
            // Get value from List<String> for editTexts
            String textValue = listOfValues.get(position);
            textValue = ((EditText)editText).getValue();
            adapter.notifyDataSetChanged();
            return false;
        }
    });
    

    这里发生的是,一旦按下某个键,您将获得editText的值,并将列表中字符串的值更改为新值 . 然后,您告诉适配器其中一个项的值已更改,需要刷新 . 虽然这不是解决问题的有效方法,但它是一种备份解决方案,以防您无法想到更好的方法 .

  • 0

    尝试使用该函数将Edittext中的值存储到String变量中

    String temp;
    
    editText.addTextChangedListener(new TextWatcher() {
    
        public void onTextChanged(CharSequence s, int start, int before, int count) {
            // TODO Auto-generated method stub
    
        }
        public void beforeTextChanged(CharSequence s, int start, int count,
        int after) {
            // TODO Auto-generated method stub
    
        }
    
        public void afterTextChanged(Editable s) {
            // TODO Auto-generated method stub
    
            temp = s.toString();//editText.getText().toString();
    
            childValues[groupPosition][childPosition][]= temp ;
    
            Toast.makeText(context, ""+childValues[groupPosition][childPosition], Toast.LENGTH_SHORT).show();
        }
    });
    

    并且在 getChild() 函数中始终检查temp和 settext() 值中的数据到特定的 edittext .

  • 1

    你必须添加两件事 .

    1) expandableListView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);

    2)在清单中(在您的活动上) android:windowSoftInputMode="adjustPan"

相关问题