如果为空,则禁用EditText数组索引

时间:2017-04-24 12:38:11

标签: java android

如果没有要显示的文本,我想在以下代码中禁用和隐藏这些edittext实例。我已经尝试过一些东西,比如Visabilty.Gone和focusable:XML中的false,但没有骰子:

代码:

   private EditText scorecardCourse;
private EditText scorecardDate;

private SQLiteHandler db;

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    db = new SQLiteHandler(getActivity().getApplicationContext());

    HashMap<String, String> rounds = db.getRoundsDetails();

    if(db.getRoundsDetails().size() != 0){

        View view = inflater.inflate(R.layout.fragment_scorecards, container, false);

        ((MainActivity) getActivity())
                .setActionBarTitle("Scorecard");

        scorecardCourse = (EditText) view.findViewById(R.id.course);
        scorecardCourse.setEnabled(false);
        scorecardDate = (EditText) view.findViewById(R.id.date);
        scorecardDate.setEnabled(false);


        final String course = rounds.get("courseName");
        final String date = rounds.get("date");

            scorecardCourse.setText(course);
            scorecardDate.setText(date);


            ArrayList<HashMap<String, String>> arrayList = new ArrayList<HashMap<String, String>>();
            arrayList = db.getAllHoles();

            if(arrayList.size() != 0){

            EditText []holeNum = new EditText[18];
            holeNum[0]=(EditText) view.findViewById(R.id.scorecardHoleNum1);
            holeNum[1]=(EditText) view.findViewById(R.id.scorecardHoleNum2);
            holeNum[2]=(EditText) view.findViewById(R.id.scorecardHoleNum3);
            holeNum[3]=(EditText) view.findViewById(R.id.scorecardHoleNum4);
            holeNum[4]=(EditText) view.findViewById(R.id.scorecardHoleNum5);
            holeNum[5]=(EditText) view.findViewById(R.id.scorecardHoleNum6);
            holeNum[6]=(EditText) view.findViewById(R.id.scorecardHoleNum7);
            holeNum[7]=(EditText) view.findViewById(R.id.scorecardHoleNum8);
            holeNum[8]=(EditText) view.findViewById(R.id.scorecardHoleNum9);
            holeNum[9]=(EditText) view.findViewById(R.id.scorecardHoleNum10);
            holeNum[10]=(EditText) view.findViewById(R.id.scorecardHoleNum11);
            holeNum[11]=(EditText) view.findViewById(R.id.scorecardHoleNum12);
            holeNum[12]=(EditText) view.findViewById(R.id.scorecardHoleNum13);
            holeNum[13]=(EditText) view.findViewById(R.id.scorecardHoleNum14);
            holeNum[14]=(EditText) view.findViewById(R.id.scorecardHoleNum15);
            holeNum[15]=(EditText) view.findViewById(R.id.scorecardHoleNum16);
            holeNum[16]=(EditText) view.findViewById(R.id.scorecardHoleNum17);
            holeNum[17]=(EditText) view.findViewById(R.id.scorecardHoleNum18);

            EditText []holeYards = new EditText[18];
            holeYards[0]=(EditText) view.findViewById(R.id.scorecardYards1);
            holeYards[1]=(EditText) view.findViewById(R.id.scorecardYards2);
            holeYards[2]=(EditText) view.findViewById(R.id.scorecardYards3);
            holeYards[3]=(EditText) view.findViewById(R.id.scorecardYards4);
            holeYards[4]=(EditText) view.findViewById(R.id.scorecardYards5);
            holeYards[5]=(EditText) view.findViewById(R.id.scorecardYards6);
            holeYards[6]=(EditText) view.findViewById(R.id.scorecardYards7);
            holeYards[7]=(EditText) view.findViewById(R.id.scorecardYards8);
            holeYards[8]=(EditText) view.findViewById(R.id.scorecardYards9);
            holeYards[9]=(EditText) view.findViewById(R.id.scorecardYards10);
            holeYards[10]=(EditText) view.findViewById(R.id.scorecardYards11);
            holeYards[11]=(EditText) view.findViewById(R.id.scorecardYards12);
            holeYards[12]=(EditText) view.findViewById(R.id.scorecardYards13);
            holeYards[13]=(EditText) view.findViewById(R.id.scorecardYards14);
            holeYards[14]=(EditText) view.findViewById(R.id.scorecardYards15);
            holeYards[15]=(EditText) view.findViewById(R.id.scorecardYards16);
            holeYards[16]=(EditText) view.findViewById(R.id.scorecardYards17);
            holeYards[17]=(EditText) view.findViewById(R.id.scorecardYards18);

            EditText []holePar = new EditText[18];
            holePar[0]=(EditText) view.findViewById(R.id.scorecardPar1);
            holePar[1]=(EditText) view.findViewById(R.id.scorecardPar2);
            holePar[2]=(EditText) view.findViewById(R.id.scorecardPar3);
            holePar[3]=(EditText) view.findViewById(R.id.scorecardPar4);
            holePar[4]=(EditText) view.findViewById(R.id.scorecardPar5);
            holePar[5]=(EditText) view.findViewById(R.id.scorecardPar6);
            holePar[6]=(EditText) view.findViewById(R.id.scorecardPar7);
            holePar[7]=(EditText) view.findViewById(R.id.scorecardPar8);
            holePar[8]=(EditText) view.findViewById(R.id.scorecardPar9);
            holePar[9]=(EditText) view.findViewById(R.id.scorecardPar10);
            holePar[10]=(EditText) view.findViewById(R.id.scorecardPar11);
            holePar[11]=(EditText) view.findViewById(R.id.scorecardPar12);
            holePar[12]=(EditText) view.findViewById(R.id.scorecardPar13);
            holePar[13]=(EditText) view.findViewById(R.id.scorecardPar14);
            holePar[14]=(EditText) view.findViewById(R.id.scorecardPar15);
            holePar[15]=(EditText) view.findViewById(R.id.scorecardPar16);
            holePar[16]=(EditText) view.findViewById(R.id.scorecardPar17);
            holePar[17]=(EditText) view.findViewById(R.id.scorecardPar18);

            EditText []holeShots = new EditText[18];
            holeShots[0]=(EditText) view.findViewById(R.id.scorecardShots1);
            holeShots[1]=(EditText) view.findViewById(R.id.scorecardShots2);
            holeShots[2]=(EditText) view.findViewById(R.id.scorecardShots3);
            holeShots[3]=(EditText) view.findViewById(R.id.scorecardShots4);
            holeShots[4]=(EditText) view.findViewById(R.id.scorecardShots5);
            holeShots[5]=(EditText) view.findViewById(R.id.scorecardShots6);
            holeShots[6]=(EditText) view.findViewById(R.id.scorecardShots7);
            holeShots[7]=(EditText) view.findViewById(R.id.scorecardShots8);
            holeShots[8]=(EditText) view.findViewById(R.id.scorecardShots9);
            holeShots[9]=(EditText) view.findViewById(R.id.scorecardShots10);
            holeShots[10]=(EditText) view.findViewById(R.id.scorecardShots11);
            holeShots[11]=(EditText) view.findViewById(R.id.scorecardShots12);
            holeShots[12]=(EditText) view.findViewById(R.id.scorecardShots13);
            holeShots[13]=(EditText) view.findViewById(R.id.scorecardShots14);
            holeShots[14]=(EditText) view.findViewById(R.id.scorecardShots15);
            holeShots[15]=(EditText) view.findViewById(R.id.scorecardShots16);
            holeShots[16]=(EditText) view.findViewById(R.id.scorecardShots17);
            holeShots[17]=(EditText) view.findViewById(R.id.scorecardShots18);

            for(int i = 0; i < arrayList.size(); i++){


                final String numHole = arrayList.get(i).get("holeNum");
                final String yards = arrayList.get(i).get("yards");
                final String par = arrayList.get(i).get("par");
                final String shots = arrayList.get(i).get("shots");

                holeNum[i].setText(numHole);
                holeYards[i].setText(yards);
                holePar[i].setText(par);
                holeShots[i].setText(shots);

            }
        }

        return view;
    }else {
        View view = inflater.inflate(R.layout.fragment_no_rounds, container, false);

        ((MainActivity) getActivity())
                .setActionBarTitle("Scorecard");

        return view;
    }
}

@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
    super.onViewCreated(view, savedInstanceState);

    getActivity().setTitle("Scorecards");
}
}

3 个答案:

答案 0 :(得分:1)

我认为您要检查某些条件,并在相应检查后要更改编辑文本可见性 现在-xml部分也通过编程完成 对于Visiblity使用 - setVisibility(View.)

启用/使用diable - setEnabled(true/false)

现在你看起来关注你的观点setFocusable(true/false)

但我建议您在检查之前添加一个默认状态..i.e yourtextview.visibility(View.Gone);

完整代码

if(your condition)
        {
            yourtextview.setVisibility(View.GONE);
            yourtextview.setEnabled(false);
            yourtextview.setFocusable(false);
        }

        else
        {
            yourtextview.setVisibility(View.VISIBLE);
            yourtextview.setEnabled(true);
            yourtextview.setFocusable(true);
        }

我跳它可以帮助你

答案 1 :(得分:0)

To Disable the edittext,you can try the following methods:

    editText.setFocusable(false);
    editText.setEnabled(false);
    editText.setCursorVisible(false);
    editText.setKeyListener(null);
    editText.setBackgroundColor(Color.TRANSPARENT); 


In xml:

android:editable="false"

答案 2 :(得分:0)

使用Jayman的建议,这是通过为每个数组项设置一个初始状态来实现的:

holeNum[0]=(TextView) view.findViewById(R.id.scorecardHoleNum1);
                holeNum[0].setVisibility(View.GONE);

然后是以下条件陈述:

if(holeNum[i].getText() == null){
                    holeNum[i].setVisibility(View.GONE);
                    holeNum[i].setEnabled(false);
                    holeNum[i].setFocusable(false);
                }else{
                    holeNum[i].setVisibility(View.VISIBLE);
                    holeNum[i].setEnabled(true);
                    holeNum[i].setFocusable(true);
                    holeNum[i].setText(numHole);
                }