我有一个由三个微调器和一个表组成的UI。 (分别为Spinner1,Spinner2和Spinner3)。 Spinner2,Spinner3交换值基于对Spinner1的选择。根据我的要求将内容插入表格(LABELS2)
从一个表 --rm \
-u root \
-p 8080:8080 \
-v jenkins-data:/var/jenkins_home \
-v /var/run/docker.sock:/var/run/docker.sock \
-v "$HOME":/home \
jenkinsci/blueocean
中检索到Spinner1,Spinner2,Spinner3的值。
在单击保存按钮时,所有三个微调器值都插入到另一个表"LABELS"
中。
要求:Spinner2应该基于表“ Labels”和“ Labels2”之间的比较来加载内容。
后面的想法是避免重复数据插入,并知道保存数据后还剩下多少记录。
示例:表“标签”具有三个记录
"LABELS2"
Mainactivity
1.("A1”,”EXTRA1”,”MORE1");
2,("A1”,”EXTRA2”,”MORE2");
3,”MORE2");
DatabaseHandler
public class Mainactivity extends AppCompatactivity {
DatabaseHandler mDH;
Spinner mSpinner1,mSpinner2,mSpinner3;
Cursor mSpinner1Csr,mSpinner2Csr,mSpinner3Csr;
SimpleCursorAdapter mSpinner1Adapter,mSpinner2Adapter,mSpinner3Adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mSpinner1 = this.findViewById(R.id.spinner1);
mSpinner2 = this.findViewById(R.id.spinner2);
mSpinner3 = this.findViewById(R.id.spinner3);
mDH = new DatabaseHandler(this);
addSomeTestingData(); // ADD testing data if none
manageSpinner1(); // Manages spinner1 not that spinner 1 invokes manage spinner2 and spinnr manages spinner3
}
private void addSomeTestingData() {
if(DatabaseUtils.queryNumEntries(mDH.getwritabledatabase(),DatabaseHandler.TABLE_LABELS) > 0) return;
// Data for LABELS2 table (spinner 1 (note 1st column listed in spinner))
mDH.insertLabel("A1”,”MORE1");
mDH.insertLabel("A1”,”MORE2");
mDH.insertLabel("A1”,”EXTRA3”,”MORE5");
mDH.insertLabel1("A1EXTRA1");
mDH.insertLabel1("A1EXTRA2");
mDH.insertLabel1("B1EXTRA1");
mDH.insertLabel1("B1EXTRA2");
mDH.insertLabel1("L1EXTRA1");
mDH.insertLabel1("L1EXTRA2");
// Data for LABELS table (spinner 1,2,3)
mDH.insertlabel("A1”,”MORE1");
mDH.insertlabel("A1”,”MORE2");
mDH.insertlabel("A1”,”MORE5");
}
private void manageSpinner1() {
mSpinner1Csr = mDH.getallLabelsForSpinner1AsCursor();
if (mSpinner1Adapter == null) {
mSpinner1Adapter = new SimpleCursorAdapter(
this,android.R.layout.simple_list_item_1,mSpinner1Csr,new String[]{DatabaseHandler.KEY_NAME},new int[]{android.R.id.text1},0
);
mSpinner1.setadapter(mSpinner1Adapter);
mSpinner1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,View view,int position,long id) {
manageSpinner2(mSpinner1Csr.getString(mSpinner1Csr.getcolumnIndex(DatabaseHandler.ROUTE)));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
} else {
mSpinner1Adapter.swapCursor(mSpinner1Csr);
}
}
private void manageSpinner2(String keyFromSpinner1) {
mSpinner2Csr = mDH.getallLabelsForSpinner2AsCursor(keyFromSpinner1);
if (mSpinner2Adapter == null) {
mSpinner2Adapter = new SimpleCursorAdapter(
this,new String[]{DatabaseHandler.ROUTE},0
);
mSpinner2.setadapter(mSpinner2Adapter);
mSpinner2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent,long id) {
manageSpinner3(mSpinner2Csr.getString(mSpinner2Csr.getcolumnIndex(DatabaseHandler.ROUTE)));
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
} else {
mSpinner2Adapter.swapCursor(mSpinner2Csr);
}
}
private void manageSpinner3(String keyForSpinner3) {
mSpinner3Csr = mDH.getallLabelsForSpinner3AsCursor(keyForSpinner3);
if (mSpinner3Adapter == null) {
mSpinner3Adapter = new SimpleCursorAdapter(
this,mSpinner3Csr,new String[]{DatabaseHandler.KEY_ID},0
);
mSpinner3.setadapter(mSpinner3Adapter);
} else {
mSpinner3Adapter.swapCursor(mSpinner3Csr);
}
}
}
模拟: 您可以在下面选择第一个微调器“ P1”,以显示其相关信息
现在,第二个微调器基于第一个微调器选择显示信息。我们保存有关每个选择的信息。
要求是微调器2的信息应减少数据保存信息。
示例:如果选择“ 9001234”,则用“ 9001234”保存信息,下一个应该自动为“ 9003562”,依此类推。
期待任何帮助。