Android微调器基于多个表数据列比较加载内容

我有一个由三个微调器和一个表组成的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”,以显示其相关信息

Android微调器基于多个表数据列比较加载内容

现在,第二个微调器基于第一个微调器选择显示信息。

Android微调器基于多个表数据列比较加载内容

我们保存有关每个选择的信息。

要求是微调器2的信息应减少数据保存信息。

示例:如果选择“ 9001234”,则用“ 9001234”保存信息,下一个应该自动为“ 9003562”,依此类推。

期待任何帮助。

yiqichenmo 回答:Android微调器基于多个表数据列比较加载内容

这个怎么样?

public Cursor getRoutes(long name) {
    SQLiteDatabase db = this.getReadableDatabase();
    String whereclause = KEY_NAME + "=?";
    String[] whereargs = new String[]{String.valueOf(name)};
    String sql = "SELECT customer_name,labels5.number,labels.id,customer._id,labels.route FROM customer left join labels ON customer._id = labels._id  LEFT JOIN labels5 ON labels5.number =  labels.route WHERE number IS NULL";
    return db.query(sql,null,whereclause,whereargs,ROUTE);
}
,

第二种方式

public Cursor getRoutes(long name) {
    SQLiteDatabase db = this.getReadableDatabase();
    String whereclause = KEY_NAME + "=?";
    String[] whereargs = new String[]{String.valueOf(name)};
    String[] tableColumns = new String[]{"customer_name,labels.route FROM customer left join labels ON customer._id = labels._id  LEFT JOIN labels5 ON labels5.number =  labels.route where number is NULL "};
    //String orderBy = "ROUTE";
  // String tableColumns = SELECT customer_name,labels.route FROM customer left join labels ON customer._id = labels._id  LEFT JOIN labels5 ON labels5.number =  labels.route where number is NULL"  ;
    return db.query(TABLE_LABELS,tableColumns,ROUTE);
}
本文链接:https://www.f2er.com/3156885.html

大家都在问