ExpandableListView中的EditTexts

时间:2011-07-28 16:06:18

标签: android layout android-edittext expandablelistview

您好我正在尝试创建一个显示ExpandableListView的活动,如图所示。

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

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

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

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

Expandable ListView with EditText

4 个答案:

答案 0 :(得分:6)

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

 android:windowSoftInputMode="adjustPan"

答案 1 :(得分:1)

我不确定如何解决聚焦问题,但我知道为什么你必须折叠并展开组以查看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的值,并将列表中字符串的值更改为新值。然后,您告诉适配器其中一个项的值已更改,需要刷新。虽然这不是解决问题的有效方法,但它是一种备份解决方案,以防您无法想到更好的方法。

答案 2 :(得分:1)

尝试使用函数

将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()函数中始终检查特定settext()的临时数据和edittext值。

答案 3 :(得分:0)

你必须添加两件事。

1)expandableListView.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);

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