Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在androidstudio中使用spinner实现SQLite连接以从表中获取id_Java_Android_Sqlite_Spinner - Fatal编程技术网

Java 如何在androidstudio中使用spinner实现SQLite连接以从表中获取id

Java 如何在androidstudio中使用spinner实现SQLite连接以从表中获取id,java,android,sqlite,spinner,Java,Android,Sqlite,Spinner,我在SQLite数据库中创建了两个表:stok和sales 在DatabaseHelper.java 创建表stok 创建表销售 //Data spinner supir public ArrayList<Sales> getSpinnerSales(){ ArrayList<Sales> salesList = new ArrayList<>(); // Select All Query String

我在SQLite数据库中创建了两个表:stok和sales

在DatabaseHelper.java

创建表stok

创建表销售

//Data spinner supir
    public ArrayList<Sales> getSpinnerSales(){
        ArrayList<Sales> salesList = new ArrayList<>();

        // Select All Query
        String selectQuery = "SELECT  * FROM " + "sales";

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                salesList.add(new Sales(cursor.getString(0), cursor.getString(1)));
            } while (cursor.moveToNext());
        }

        // closing connection
        cursor.close();
        db.close();

        // returning lables
        return salesList;
    }
从SQLite创建列表数据

public List<String> getSpinnerSales(){
    List<String> labels = new ArrayList<String>();

    // Select All Query
    String selectQuery = "SELECT  * FROM " + "sales";

    SQLiteDatabase db = this.getReadableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            labels.add(cursor.getString(0));
            labels.add(cursor.getString(1));
        } while (cursor.moveToNext());
    }

    // closing connection
    cursor.close();
    db.close();

    // returning lables
    return labels;
}
在微调器上显示

private void loadSpinnerSales() {
    // database handler
    DatabaseHelper db = new DatabaseHelper(getApplicationContext());

    // Spinner Drop down elements
    List<String> lables = db.getSpinnerSales();

    // Creating adapter for spinner
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, lables);

    // Drop down layout style - list view with radio button
    dataAdapter
            .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

    // attaching data adapter to spinner
    spsales.setAdapter(dataAdapter);
}
测试是否选择了微调器

    spsales.setOnItemSelectedListener(new 
        AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position,long id) {
            String label = parent.getItemAtPosition(position).toString();
            Log.d("label:", label);
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {

        }
    });

我需要id\u sales将值放入其他表并保存到SQLite,但微调器必须显示sales的名称。

最好的方法是使用自定义适配器 您可以将案例中的对象列表islist of sales id和name传递给适配器,而不仅仅是字符串列表, 然后在选定的项目上,您将获得选定的对象 然后你可以得到任何你需要的id或姓名 您可以按照此链接创建自定义适配器

我通过编辑代码来解决这个问题

// looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                labels.add(cursor.getString(0)+cursor.getString(1));
            } while (cursor.moveToNext());
        }
并在选定项上的微调器处使用子字符串进行操作

spsupir.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position,long id) {
                String label = parent.getItemAtPosition(position).toString();
                String ids = String.valueOf(label).substring(0,1);
                Log.d("label:", ids);
            }

            @Override
            public void onNothingSelected(AdapterView<?> adapterView) {

            }
        });
另一个解决问题的方法

步骤1创建模型类

public class Sales {
    String id_sales,nama;

    public Sales(String id_sales, String nama) {
        this.id_sales = id_sales;
        this.nama = nama;
    }

    public String getId_sales() {
        return id_sales;
    }

    public void setId_sales(String id_sales) {
        this.id_sales = id_sales;
    }

    public String getNama() {
        return nama;
    }

    public void setNama(String nama) {
        this.nama = nama;
    }

    @Override
    public String toString() {
        return nama;
    }
}
步骤2将来自SQLite表sales的所有数据放入

//Data spinner supir
    public ArrayList<Sales> getSpinnerSales(){
        ArrayList<Sales> salesList = new ArrayList<>();

        // Select All Query
        String selectQuery = "SELECT  * FROM " + "sales";

        SQLiteDatabase db = this.getReadableDatabase();
        Cursor cursor = db.rawQuery(selectQuery, null);

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                salesList.add(new Sales(cursor.getString(0), cursor.getString(1)));
            } while (cursor.moveToNext());
        }

        // closing connection
        cursor.close();
        db.close();

        // returning lables
        return salesList;
    }
步骤3生成void以使用sqlite aa活动中的数据

private void loadSpinnerSales() {
        // database handler
        DatabaseHelper db = new DatabaseHelper(getApplicationContext());
        ArrayList<Sales> salesList = db.getSpinnerSales();
        ArrayAdapter<Sales> adapter = new ArrayAdapter<Sales>(this, android.R.layout.simple_spinner_dropdown_item, salesList);
        spsales.setAdapter(adapter);

    }
步骤4 OnCreate的加载方法

    spsales = (Spinner) findViewById(R.id.spSales);
    loadSpinnerSales();

    spsales.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            Sales sales = (Sales) parent.getSelectedItem();
            Toast.makeText(getApplicationContext(),sales.getId_sales(),Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });
private void loadSpinnerSales() {
        // database handler
        DatabaseHelper db = new DatabaseHelper(getApplicationContext());
        ArrayList<Sales> salesList = db.getSpinnerSales();
        ArrayAdapter<Sales> adapter = new ArrayAdapter<Sales>(this, android.R.layout.simple_spinner_dropdown_item, salesList);
        spsales.setAdapter(adapter);

    }
    spsales = (Spinner) findViewById(R.id.spSales);
    loadSpinnerSales();

    spsales.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {

            Sales sales = (Sales) parent.getSelectedItem();
            Toast.makeText(getApplicationContext(),sales.getId_sales(),Toast.LENGTH_SHORT).show();
        }

        @Override
        public void onNothingSelected(AdapterView<?> parent) {
        }
    });