Android 动态添加view或item并获取数据

按照国际惯例,先上图:

Android 动态添加view或item并获取数据_第1张图片

核心代码在于以下两点:

 /**
     * 添加item
     */
    private void addViewItem(){
        View viewItem = LayoutInflater.from(this).inflate(R.layout.item_add_vip_num, llVipNumContainer,false);
        llVipNumContainer.addView(viewItem);
        sortViewItem();
        //添加并且排序之后将布局滚动到底部,方便用户继续添加
        scrollView.post(new Runnable() {
            @Override
            public void run() {
                scrollView.fullScroll(ScrollView.FOCUS_DOWN);
            }
        });

    }

    /**
     * 该方法主要用于排序(每个item中的序号),主要针对从中间删除item的情况
     */
    private void sortViewItem(){
        for(int i = 0; i < llVipNumContainer.getChildCount(); i++){
            final View viewItem = llVipNumContainer.getChildAt(i);
            TextView tvIndex = (TextView)viewItem.findViewById(R.id.tv_index);
            tvIndex.setText((i+1) + "");
            LinearLayout llDelete = (LinearLayout) viewItem.findViewById(R.id.ll_delete);
            llDelete.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    llVipNumContainer.removeView(viewItem);
                    sortViewItem();
                }
            });
        }
    }

注意两点:

1、每次添加/删除完成之后要进行重新排序,主要是针对从中间删除item时序号间断问题;

2、每次添加完成之后将ScrollView滚动到底部,方便用户继续进行添加操作。

 

源码传送门:https://github.com/tianyalu/DynamicallyAddItemDemo

如觉得对您有帮助,欢迎给个star。

你可能感兴趣的:(Android)