代码之家  ›  专栏  ›  技术社区  ›  Milan Maxa Maksimović

计数填充的文本字段[关闭]

  •  -3
  • Milan Maxa Maksimović  · 技术社区  · 6 年前

    我正在开发一个应用程序,它 EditText 字段和 Button
    作为参考, 按钮 应该开一家新的 Activity 编辑文本 领域,

    那么,让我们假设一下
    1) 如果第三 Editext 活动
    编辑文本 活动
    每一天都是这样 编辑文本 领域。

    问题是,如何计算填充的文本字段?

    5 回复  |  直到 6 年前
        1
  •  1
  •   bagya gunawardana    6 年前

    正如您强调的那样,countFilledFileds()方法将对您有所帮助。据我所知,这将是你的问题的完整解决办法。

    public class SampleActivity extends AppCompatActivity {
    
    private EditText editText1,editText2,editText3,editText4;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_sample);
    
        Button btn = findViewById(R.id.btn);
        editText1 = findViewById(R.id.editText1);
        editText2 = findViewById(R.id.editText2);
        editText3 = findViewById(R.id.editText3);
        editText4 = findViewById(R.id.editText4);
    
    
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
    
                int filledFileds = countFilledFields();
                Log.d("filled", String.valueOf(filledFileds));
                Class newClass = SampleActivity.class;
    
                switch (filledFileds){
                    case 1:
    
                        newClass = Activity1.class;
    
                        break;
    
                    case 2:
    
                        newClass = Activity2.class;
    
                        break;
    
                    case 3:
    
                        newClass = Activity3.class;
    
                        break;
    
                    case 4:
    
                        newClass = Activity4.class;
    
                        break;
    
                    default:
    
    
                }
    
                Intent intent = new Intent(SampleActivity.this, newClass);
            }
        });
    }
    
    private int countFilledFields() {
    
        ArrayList<EditText> editTexts = new ArrayList<>();
        editTexts.add(editText1);
        editTexts.add(editText2);
        editTexts.add(editText3);
        editTexts.add(editText4);
    
        int filledNumber = 0;
    
        for(int i = 0;i < editTexts.size() ;i++){
    
            if(editTexts.get(i).getText()!=null && !editTexts.get(i).getText().toString().matches("")){
                filledNumber += 1;
            }
    
        }
        return filledNumber;
    }
    }
    
        2
  •  3
  •   Intsab Haider    6 年前

    你可以这样做。。但你必须补充一点

    android:tag="et"

    public class MainActivity extends AppCompatActivity {
     int count=0;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
    
            LinearLayout parentLayout = (LinearLayout) findViewById(R.id.linearLayout);
            int elements = parentLayout.getChildCount();
            View v = null;
            for(int i=0; i<elements; i++) {
                v = parentLayout.getChildAt(i);
               if(v.getTag()!=null && v.getTag().equals("et")){
                   count= count++;
               }
            }
        }
    }
    

        3
  •  1
  •   Ragesh    6 年前

    循环EditText对象并知道它是否有值;

    例如,

    EditText e1 = ....
    EditText e2 = .....
    .
    .
    .
    EditText e10 = .....
    EditText allText[] = new EditText[]{e1, e2, ...e10};
    int filled = 0;
    for(int i = 0; i < allText.length; i++) {
        if(!allText[i].getText().toString().isEmpty())
            filled++;
    }
    

    所以你的人已经数到了。

        4
  •  1
  •   Archana    6 年前

    您可以使用一些标志来设置填充的editText字段的计数。

    将所有editText引用添加到列表中。并使用下面的方法获得计数。

    int count =0;
    private int getEditTextViewCount(List<EditText> editTexts){
        for(EditText editText : editTexts){
            if(!editText.getText().toString().isEmpty()){
                count++;
            }
        }
        return count;
    }
    
        5
  •  1
  •   Kartik    6 年前

    long numberOfFilledFields = Stream.of(
                editText1.getText().toString(),
                editText2.getText().toString(),
                editText3.getText().toString()) //you can add as many as you want here
            .filter(s -> !s.isEmpty())
            .count();
    
    switch (numberOfFilledFields) {
        case 0:
            //start activity 1
            break;
        case 1:
            //start activity 2
            break;
        .
        .
        .
    }