8

我添加了一个微调器并将 a 列表加载到其中。使用app我想从列表中选择。但我无法做到。

 subDivisionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
    {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
        {

            if (isUserAction) {
                if (position != selectedSubDivisionPosition) {
                    resetForm(false, false);
                }
            }
            selectedSubDivision = subDivisionList.get(position);
            selectedSubDivisionPosition = position;
            isUserAction = true;
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {

        }
    });

当我单击微调器时,列表会显示,但是当我单击一个项目时,它会返回到原始状态。即选定的项目在点击后不显示。见下图

在此处输入图像描述

更新 1

下面是我的resetForm方法

private void resetForm(boolean all, boolean signal) {

    this.refNofield1.setText("");
    this.consumerNameEditText.setText("");
    this.consumerAddressEditText.setText("");
    this.longitudeEditText.setText("");
    this.latitudeEditText.setText("");
    this.placeEditText.setText("");
    this.tarifEditText.setText("");
    this.sLoadEditText.setText("");
    this.cableLengthEditText.setText("");
    this.runningLoadEntryA.setText("");
    this.runningLoadEntryB.setText("");
    this.runningLoadEntryC.setText("");
    this.ctRatio.setText("");
    this.transformerRating.setText("");
    this.newSurveyImagesBitmap = new ArrayList<Bitmap>();
    this.newSurveyImageSliderAdapter.setSliderImages(this.newSurveyImagesBitmap);
    this.imagesNames = new ArrayList<String>();
    latestSelectedImagePath = "";
    refNo = "";
    customerId = "";
    imageCount = 0;
    meterLocationRadioGroup.clearCheck();

    meterTypeSpinner.setSelection(0);
    meterTypeDesiredSpinner.setSelection(0);
    meterTypeFieldSpinner.setSelection(0);
    installTypeSpinner.setSelection(0);
    meterStatusSpinner.setSelection(0);
    CtRatioSpinner.setSelection(0);
    TransfRateSpinner.setSelection(0);
    transformerTypeSpinner.setSelection(0);
    subDivisionSpinner.setSelection(0);
    //meterTypeSpinner.setSelection(0);
    selectedMeterType = "";
    zongDataRateEdittext.setText("");
    mobilinkDataRateEdittext.setText("");
    telenorDataRateEdittext.setText("");
    ufoneDataRateEdittext.setText("");

    enableDisableDataRateEntry(false);
    enableDisableOperators(false,false);

    if (all) {
        setSubDivs();
    }

    isatbSealedChecked = false;
    atbSealedCheckBox.setEnabled(false);
    ctQuantitySpinner.setSelection(0);

    if (signal) {
        zongRadioGroup.clearCheck();
        waridRadioGroup.clearCheck();
        mobilinkRadioGroup.clearCheck();
        telenorRadioGroup.clearCheck();
        if (isMobilinkChecked) {
            mobilinkCheckBox.setChecked(false);
        }
        if (isWaridChecked) {
            waridCheckBox.setChecked(false);
        }
        if (isTelenorChecked) {
            telenorCheckBox.setChecked(false);
        }
        if (isZongChecked) {
            zongCheckBox.setChecked(false);
        }
        zongType = "";
        mobilinkType = "";
        telenorType = "";
        waridType = "";
        zongDataRate = 0;
        waridDataRate = 0;
        telenorDataRate = 0;
        mobilinkDataRate = 0;
    }

}
4

4 回答 4

4

如上所述resetForm方法是使用第一项重置微调器的值

subDivisionSpinner.setSelection(0);

所以评论这个,微调器应该按预期工作

private void resetForm(boolean all, boolean signal) {
    ...
    //subDivisionSpinner.setSelection(0); comment this
    //meterTypeSpinner.setSelection(0);
于 2020-06-29T11:06:52.813 回答
2

关注@Pavneet_Sing解决方案。我已经完成了以下操作,现在可以使用

private void resetForm(boolean all, boolean signal)
{
    if(all || signal)// if both true then reset form otherwise not
    {
        this.refNofield1.setText("");
        this.consumerNameEditText.setText("");
        this.consumerAddressEditText.setText("");
        this.longitudeEditText.setText("");
        this.latitudeEditText.setText("");
        this.placeEditText.setText("");
        //......
    }



}
于 2020-06-29T17:29:22.277 回答
0

试试这个,isUserAction = true;在你的 if 语句之前添加

subDivisionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
   {
       @Override
       public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
       {
           isUserAction = true;

           if (isUserAction) {
               if (position != selectedSubDivisionPosition) {
                   resetForm(false, false);
               }
           }
           selectedSubDivision = subDivisionList.get(position);
           selectedSubDivisionPosition = position;
       }

       @Override
       public void onNothingSelected(AdapterView<?> parent) {

       }
   });
于 2020-06-25T11:25:11.357 回答
0

通过移动将您的代码更改为此

selectedSubDivision = subDivisionList.get(position); selectedSubDivisionPosition = 位置;isUserAction = 真;

在 else 语句中。

  subDivisionSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
        {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
            {
    
                if (isUserAction)
                    {
                    if (position != selectedSubDivisionPosition)
                         {
                        resetForm(false, false);
                        }
                    }
                     //MOVE YOUR CODE INSIDE THE ELSE STATEMENT
                   else
                     {
                       selectedSubDivision = subDivisionList.get(position);
                       selectedSubDivisionPosition = position;
                       isUserAction = true;
                     }
              //  selectedSubDivision = subDivisionList.get(position);
              //  selectedSubDivisionPosition = position;
              //  isUserAction = true;
            }
    
            @Override
            public void onNothingSelected(AdapterView<?> parent) {
    
            }
   

     });
于 2020-07-04T08:26:33.640 回答