我想在动态添加的表格视图中的所有列中添加数字

Posted

技术标签:

【中文标题】我想在动态添加的表格视图中的所有列中添加数字【英文标题】:I want to add the numbers in all the columns in dynamic added tableview 【发布时间】:2019-04-05 15:21:02 【问题描述】:

我正在制作一个包含 5 列的动态表格...我希望当我单击总计按钮时,我会获得添加到一个文本视图中的某一特定列之前的所有金额的总和...就像我想要的图片一样将每行的总金额添加到下面的文本视图中......请帮助我......我尝试了很多东西,但没有一个对我有逻辑

 et8 = new EditText(this);
        et9 = new EditText(this);
        et10 = new EditText(this);
        et7.setText("");
        et8.setText("");
        et9.setText("");
        et10.setText("");
        et6.setBackgroundResource(R.drawable.edittext3);
        et6.setGravity(Gravity.CENTER);
        et6.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et7.setBackgroundResource(R.drawable.edittext3);
        et7.setGravity(Gravity.CENTER);
        et7.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et8.setBackgroundResource(R.drawable.edittext3);
        et8.setGravity(Gravity.CENTER);
        et8.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et9.setBackgroundResource(R.drawable.edittext3);
        et9.setGravity(Gravity.CENTER);
        et9.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        et10.setBackgroundResource(R.drawable.edittext3);
        et10.setGravity(Gravity.CENTER);
        et10.setTextAlignment(View.TEXT_ALIGNMENT_CENTER);
        tr1.addView(et6);
        tr1.addView(et7);
        tr1.addView(et8);
        tr1.addView(et9);
        tr1.addView(et10);
        t1.addView(tr1);
        try 
            for (i = 0; i <= t1.getChildCount()-1; i++)
                qty.setText(String.valueOf(i));


        
        catch (Exception e)
        
            Toast.makeText(this, "failed to add qty", Toast.LENGTH_SHORT).show();
        

        et9.addTextChangedListener(new TextWatcher() 
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) 

            

            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) 
                try 
                    int i, j;
                    int mul;
                    i = Integer.parseInt(et8.getText().toString());
                    j = Integer.parseInt(et9.getText().toString());
                    mul = i * j;

                    et10.setText("" + (Integer.toString(mul)));

                
                catch (Exception e)
                
                    Toast.makeText(getApplicationContext(), "please calculate before adding row", Toast.LENGTH_SHORT).show();
                

            

            @Override
            public void afterTextChanged(Editable s) 

            
        );


        final Snackbar snbr = Snackbar.make(view,"Row added",Snackbar.LENGTH_SHORT);
        snbr.getView().setBackgroundColor(ContextCompat.getColor(view.getContext(),R.color.colorsnac1));
        snbr.setActionTextColor(getResources().getColor(R.color.snactxt));
        snbr.show();
        snbr.setAction("Dismiss", new View.OnClickListener() 
            @Override
            public void onClick(View v) 
                t1.removeView(tr1);
            
        );



    

【问题讨论】:

【参考方案1】:

首先,您应该真正使用 RecyclerView 而不是尝试手动插入每一行。然后,您可以创建一个全局 ArrayList 变量,将价格存储在 Price 列中。每个价格 EditText 都会获得一个 TextChangedListener,它会更新其在 ArrayList 中的相应元素。 TextChangedListeners 还遍历 ArrayList,检查每个值是否为数字,如果是,则将其添加到价格总计中,然后显示新计算的总计。

【讨论】:

【参考方案2】:

他们有很多方法可以做到这一点

1) 一种方法是同时将视图添加到视图组集 id 或索引

int tablerow = 1;

.....
tr1.setId(tablerow);

hashmap中使用这个id和mul存储的值 使用附加变量在 for 循环中存储 'mul' 的值

在使用视图的 id 即索引中删除视图时 您可以通过在hashmap中搜索视图的索引来减少总量

【讨论】:

以上是关于我想在动态添加的表格视图中的所有列中添加数字的主要内容,如果未能解决你的问题,请参考以下文章

表格单元格视图中的多个标签

iOS动态地将新单元格加载到表格视图的底部

如何应用动态数字格式?

除非快速选择所有单元格,否则限制表格视图

将文本字段动态添加到表格视图单元格并水平滚动

添加“所有项目”标签以及其他动态创建的标签 Android