实现类似listView中动态添加Item的功能

功能描述

每个Item中包含EditText,具体有多少个Item也不定,用户可以添加和删除,然后再保存用户输入的值。
本人愚钝,用listview无法实现 ,但后来发现其实也不需要,可能描述不准确,网上也没搜到相关的功能。搜索的关键词也很重要啊。

实现

其实挺简单,只是当时对android view 的方法不熟,其实就是在一个viewGroup中给它添加child view。然后通过ViewGroup的getChildCount,indexOfChild,getChildAt这几个方法配合使用,来确定当前child view的位置情况。如下图,子View Group 可以动态添加或删除。

实现类似listView中动态添加Item的功能_第1张图片

如何通过点击当前的button或EditText来获取到当前子 ViewGroup,即Item, 是要考虑的关键问题。比如有EditText的话可以调用getFocusedChild直接找到当前的Item,要是button或其它控件则可调用下面的函数,我写了一个简单的递归,确保找到的是最外面ViewGroup的直接孩子(Item)。

/**
     *  get itemEditLayout's child Layout
     * @param parent
     * @param child
     * @return
     */

    public static View getCurrentView(ViewGroup parent, View child) {
        View levelparent = (View) child.getParent();
        if (parent.indexOfChild(levelparent) > -1) {
            return levelparent;
        } else {
            return getCurrentView(parent, levelparent);
        }
    }

好了,ok了。


你可能感兴趣的:(android,android,listview,动态添加view)