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

按照国际惯例,先上图:

核心代码在于以下两点:

 /**
     * 添加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。

  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
对于动态加载数据,可以使用ListView或RecyclerView这样的组件,通过Adapter来实现数据动态添加和展示。下面是一个使用RecyclerView的示例代码: 1. 在布局文件中添加RecyclerView组件: ``` <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" /> ``` 2. 在Activity或Fragment中初始化RecyclerView,并设置Adapter: ``` // 获取RecyclerView组件 RecyclerView recyclerView = findViewById(R.id.recycler_view); // 设置RecyclerView的LayoutManager recyclerView.setLayoutManager(new LinearLayoutManager(this)); // 创建Adapter并设置给RecyclerView MyAdapter adapter = new MyAdapter(dataList); recyclerView.setAdapter(adapter); ``` 3. 自定义Adapter类,根据数据动态添加item: ``` public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder> { private List<String> mDataList; public MyAdapter(List<String> dataList) { mDataList = dataList; } @NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { // 创建ViewHolder View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_layout, parent, false); return new ViewHolder(view); } @Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { // 绑定数据 String data = mDataList.get(position); holder.textView.setText(data); } @Override public int getItemCount() { // 返回数据项数 return mDataList.size(); } public void addItem(String data) { // 添加数据项 mDataList.add(data); // 更新UI notifyItemInserted(mDataList.size() - 1); } static class ViewHolder extends RecyclerView.ViewHolder { TextView textView; public ViewHolder(@NonNull View itemView) { super(itemView); textView = itemView.findViewById(R.id.text_view); } } } ``` 对于动态添加TableLayout数据,同样可以使用Java代码来实现。下面是一个示例代码: ``` // 获取TableLayout组件 TableLayout tableLayout = findViewById(R.id.table_layout); // 创建一个新行 TableRow tableRow = new TableRow(this); // 添加TextView到新行中 TextView textView = new TextView(this); textView.setText("测试数据"); tableRow.addView(textView); // 把新行添加到TableLayout中 tableLayout.addView(tableRow); ``` 在上面的代码中,我们首先获取了TableLayout组件,然后创建一个新的TableRow对象,再向其中添加一个TextView对象,最后把新的TableRow添加到TableLayout中即可。如果需要添加更多的数据,只需要重复以上步骤即可。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值