0

I have a text view, by clicking TextView I have a dialog with 3 NumberPickers. I want to concatenate values to string which will looks like '99 9 99' or '99999'[selected integers from NumberPickers] from all 3 different NumberPickers shown in dialog, and set the string to the textView.

public void pricePTola() {

    //int price;
    //TextView;
    //double RPT;
    NumberPicker np1, np2, np3;
    final int npThousand, npHundrd, npTen;
    //final String[] price = new String[1];
    String price;

    TextView textView = (TextView)findViewById(R.id.RPT);
    Dialog dialog = new Dialog(HomeActivity.this);
    dialog.requestWindowFeature(Window.FEATURE_LEFT_ICON);
    dialog.setContentView(R.layout.number_picker);
    dialog.setTitle("RATE PER TOLA");
    //dialog.set

    //String strPrice = String.valueOf(price);
    //TextView RPT=(TextView)findViewById(R.id.RPT);

    np1=(NumberPicker)dialog.findViewById(R.id.np1);
    np1.setMaxValue(99);
    np1.setMinValue(00);
    np1.setWrapSelectorWheel(true);
    npThousand=np1.getValue();
    //npThousand=np1.toString();

    np2=(NumberPicker)dialog.findViewById(R.id.np2);
    np2.setMaxValue(9);
    np2.setMinValue(0);
    np1.setWrapSelectorWheel(true);
    npHundrd=np2.getValue();
    //npHundrd=np2.toString();

    np3=(NumberPicker)dialog.findViewById(R.id.np3);
    np3.setMaxValue(99);
    np3.setMinValue(00);
    np1.setWrapSelectorWheel(true);
    npTen=np3.getValue();
    np3.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

            picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5);
            /*price[0] = npThousand + "" + npHundrd + "" + npTen;
            TextView RPT = (TextView) findViewById(R.id.RPT);
            RPT.setText(price[0]);*/
        }
    });
    /*np2.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

            picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5);
            price[0] = npThousand + "" + npHundrd + "" + npTen;
            TextView RPT = (TextView) findViewById(R.id.RPT);
            RPT.setText(price[0]);
        }
    });
    np1.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() {
        @Override
        public void onValueChange(NumberPicker picker, int oldVal, int newVal) {

            picker.setValue((newVal < oldVal)?oldVal-5:oldVal+5);
            price[0] = npThousand + "" + npHundrd + "" + npTen;
            TextView RPT = (TextView) findViewById(R.id.RPT);
            RPT.setText(price[0]);
        }
    });
    dialog.show();

    //price = valueOf(valueOf(np1) + valueOf(np2) + valueOf(np3));
    price = npThousand+""+ npHundrd+""+npTen;
    TextView RPT=(TextView)findViewById(R.id.RPT);
    RPT.setText(price);

}

MainActivity.Java

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.addDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    final TextView TV1=(TextView)findViewById(RPT);
    TV1.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            pricePTola();

        }
    });
Bhuvanesh BS
  • 13,474
  • 12
  • 40
  • 66
Kartik.S
  • 73
  • 10

1 Answers1

1

1- I saw that you should make function pricePTola return string and you shouldn't declare TextView on it.

2 - in function pricePTola on every onvalueChange function you must put npThousand=np1.getValue(); for np1 and do the same for two other pickers.

3- the end of function String result = String.valueOf(npThousand)+String.valueOf(npHundrd)+String.valueOf(npTen); return result;

4 - finally on oncreate

TV1.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
        String final = pricePTola();
        TV1.setText(final);

    }
});

i hope this helped

  • I do i do np1.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker numberPicker, int i, int i1) { final int npHundrd= np2.getValue(); } }); – Kartik.S Aug 16 '17 at 20:15
  • I'm doing in 2 ways. 1st is this: np1.setOnValueChangedListener(new NumberPicker.OnValueChangeListener() { @Override public void onValueChange(NumberPicker numberPicker, int i, int i1) { final int npHundrd= np2.getValue(); } }); but here when i do ' String result = String.valueOf(valueOf(npThousand) + valueOf(npHundrd) + valueOf(npTen)); ' npThousand/Hundrd/Ten did't work here. then if i try ' int npTen= np3.getValue(); ' putting outside the ' OnValueChangedListene ' it shows some garbage value in TextView. – Kartik.S Aug 16 '17 at 20:24
  • It keep throwing garbage value in text view. It shows value in text View when dialog open, means Text View getting value at dialog open not getting/fetching value at dialog close or on numberPicker value change. – Kartik.S Aug 17 '17 at 14:07
  • did you try to use String.ValueOf() instead of ValueOF() like my solution String result = String.valueOf(npThousand)+String.valueOf(npHundrd)+String.valueOf(npTen); return result; – Mohamed Hussein Aug 19 '17 at 10:57
  • and you can make some variables public to avoid using final keyword – Mohamed Hussein Aug 19 '17 at 11:00