Сначала это был вопрос, но через несколько часов я написал код для него.Я хотел установить максимальные значения seekbar по полям из столбца «integer», спиннер использовал другой «string» столбец из этой таблицы, и мне пришлось сделать корреляцию между ними.В db.java есть класс:
public Cursor showValue(){
SQLiteDatabase db = this.getWritableDatabase();
return db.rawQuery("select " + COL_4 + " from " +TABLE_NAME, null);
}
, и есть активность:
public class zones extends AppCompatActivity {
private static SeekBar seekAdult;
private static SeekBar seekKid;
private static TextView txtAdultNumber;
private static TextView txtKidNumber;
private Integer volx;
private Integer voly;
Spinner spinner;
DataBaseHelper myDb;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_zones);
myDb = new DataBaseHelper(this);
spinner = (Spinner) findViewById(R.id.spinner);
txtAdultNumber = (TextView) findViewById(R.id.txtAdultNumber);
txtKidNumber = (TextView) findViewById(R.id.txtKidNumber);
spinnerdata();
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
int x = parent.getSelectedItemPosition();
final Cursor c = myDb.showValue();
if (c.getCount() == 0){
volx = 0;
voly = 0;
}
else c.moveToPosition(x);
volx = c.getInt(0);
voly = c.getInt(0);
c.close();
seekbaradult(volx);
seekbarkid(voly);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
}
public void spinnerdata () {
DataBaseHelper db = new DataBaseHelper(getApplicationContext());
List<String> listname = db.showZonesList();
ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(
this, android.R.layout.simple_spinner_item, listname);
spinner.setAdapter(dataAdapter);
}
public void seekbaradult (Integer y) {
seekAdult = (SeekBar)findViewById(R.id.seekAdult);
txtAdultNumber.setText(""+seekAdult.getProgress() );
//values in this column are multiplications of "30"
int max = y / 30;
seekAdult.setMax(max);
seekAdult.setOnSeekBarChangeListener(
new SeekBar.OnSeekBarChangeListener() {
int progress_value;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress_value = progress;
txtAdultNumber.setText("" +progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
txtAdultNumber.setText(""+progress_value);
}
}
);
}
public void seekbarkid (Integer y) {
seekKid = (SeekBar)findViewById(R.id.seekKid);
txtKidNumber.setText(""+seekKid.getProgress() );
int max2 = y / 30;
seekKid.setMax(max2);
seekKid.setOnSeekBarChangeListener(
new SeekBar.OnSeekBarChangeListener() {
int progress_value;
@Override
public void onProgressChanged(SeekBar seekBar, int progress, boolean fromUser) {
progress_value = progress;
txtKidNumber.setText("" +progress);
}
@Override
public void onStartTrackingTouch(SeekBar seekBar) {
}
@Override
public void onStopTrackingTouch(SeekBar seekBar) {
txtKidNumber.setText(""+progress_value);
}
}
);
}
}
Но теперь, как сделать одно максимальное значение для этих двухseekbars?