Как получить значение LiveBar в реальном времени вне onProgressChanges? - PullRequest
0 голосов
/ 24 января 2020

[здесь я создаю табличное приложение с seekBar и хочу показать эти значения в ListView]

, поэтому я столкнулся с некоторыми проблемами

Problem-1 : if я делаю «seekProg» внутри onProgessChanged, тогда я не могу получить доступ к функции seekProg снаружи.

Problem-2 : Здесь я не могу использовать ArrayAdaptor внутри seekBarChangeListener [потому что он показывает ошибку].

Итак, я хочу получить значение Live change за пределами seekBarChangeListener. так как я могу получить ??

package com.andro.table;

import androidx.appcompat.app.AppCompatActivity;


import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.widget.SeekBar;
import android.widget.TextView;

import java.util.ArrayList;

public class MainActivity extends AppCompatActivity {


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);



        TextView textView=findViewById(R.id.textView);
        SeekBar seekBar=findViewById(R.id.seekBar);
        seekBar.setMax(20);

        seekBar.setOnSeekBarChangeListener(new SeekBar.OnSeekBarChangeListener() {
            @Override
            public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {


            }

            @Override
            public void onStartTrackingTouch(SeekBar seekBar) {
            }
            @Override
            public void onStopTrackingTouch(SeekBar seekBar) {
            }
        });

        int seekProg= seekBar.getProgress(); 
        textView.setText(""+seekProg);


        int tableValue= seekBar.getProgress();
        ListView mylistView= findViewById(R.id.myListView);
        ArrayList<String> table =new ArrayList<>();
        for(int i=1;i<=20;i++) {

            int a=tableValue*i;
            table.add(tableValue+" * "+ i+ "="+a);
        }

        ArrayAdapter<String> arrayAdapter= new ArrayAdapter<String>(this, android.R.layout.simple_dropdown_item_1line,table);
        mylistView.setAdapter(arrayAdapter);


    }
}

1 Ответ

0 голосов
/ 25 января 2020

вы просто используете tableValue naa, вы можете сделать это, я думаю

seekBar.setOnSeekBarChangeListener (new SeekBar.OnSeekBarChangeListener () {

       int tableValue=0;
        @Override
        public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {

      tableValue= progress;
        }

вы также можете объявить tableValue чуть ниже Вы объявили TextView. Надеюсь, это поможет вам, если нет, прокомментируйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...