2
votes

Comment obtenir l'ID de valeur de spinner sélectionné à partir de la base de données Sqlite

Je veux COMPANY_ID comme valeur de Spinner sélectionnée à partir de la base de données SQLite et je le porte pour une utilisation ultérieure. Quelqu'un peut-il m'aider ou me suggérer comment obtenir COMPANY_ID

Voici le code d'activation

     public void addDataCompany(DataCompany dataCompany) {
            SQLiteDatabase db = this.getWritableDatabase();
            ContentValues contentValues = new ContentValues();
            contentValues.put(COMPANY_ID, dataCompany.getId() + "");
            contentValues.put(COMPANY_NAME, dataCompany.getCompanyName() + "");
            // contentValues.put(BANK_COLUMN, bank);

            try {
                db.insert(TABLE_NAME_OFFLINE_LOAD_DATA, null, contentValues);
            } catch (Exception e) {
                e.printStackTrace();
            }
            db.close();

        }


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

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

        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(1));
            } while (cursor.moveToNext());
        }

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

        // returning lables
        return labels;
    }

Enregistrement des données dans SQLite à partir de JSON voici le code

 public class SaveIntoDatabase extends AsyncTask<DataCompany, DataCompany, Boolean> {

        private final String TAG = SaveIntoDatabase.class.getSimpleName();
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }
        @Override
        protected Boolean doInBackground(DataCompany... params) {
            DataCompany dataCompany = params[0];
            databaseHelper.addDataCompany(dataCompany);
            return null;
        }
    }

Database Helper Class

J'ajoute des valeurs dans Sqlite Database de Json et voici le code

   public class MainActivity extends Activity implements
        AdapterView.OnItemSelectedListener {




    DatabaseHelper databaseHelper;
    Context context;
    NestedScrollView nestedScrollView;
    private ProgressDialog pdialog;
    RequestQueue requestQueue;
    private Spinner appCompatSpinner;
    private ArrayList<DataCompany> dataCompanies;
    private ArrayList<Company> labels;
    private ArrayList<Data> data;
    private ArrayList<BankInfo> bankInfos;
    private EditText InsureName, BankHypotical;
    private MaterialRippleLayout NextButtonmaterialRippleLayout, SaveButtonmaterialRippleLayout, materialRippleNext;
    private String SpinnerData;
    private NameAdapter nameAdapter;
    private List<BankInfo> names;
    protected ViewDialog viewDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_snv_main);
        viewDialog = new ViewDialog(this);
        viewDialog.setCancelable(false);

        appCompatSpinner = findViewById(R.id.selectSpinner_Bank_List);
        context = this;

        databaseHelper = new DatabaseHelper(context);

        appCompatSpinner.setOnItemSelectedListener(this);
//        loadSpinnerData();
        if (Utils.isNetworkAvailable(getApplicationContext())) {
            Call<NewInsuranceModel> call = RetrofitClient
                    .getInstance().getApi().newInsuranceModel("get_new_insurance_fields");

            showProgressDialog();
            call.enqueue(new Callback<NewInsuranceModel>() {

                @Override
                public void onResponse(Call<NewInsuranceModel> call, retrofit2.Response<NewInsuranceModel> response) {
                    NewInsuranceModel newInsuranceModel = response.body();
                    hideProgressDialog();


                    if (newInsuranceModel.getStatus().toString().equalsIgnoreCase("true")) {

                        dataCompanies = new ArrayList<DataCompany>();
                        dataCompanies.add(new DataCompany("Select Insurance Company"));
                        try {
                            for (int i = 0; i < dataCompanies.size(); i++) {


                                DataCompany dataCompany = newInsuranceModel.getDataCompany().get(i);
                                SaveIntoDatabase task = new SaveIntoDatabase();
                                task.execute(dataCompany);
                                dataCompanies.add(newInsuranceModel.getDataCompany().get(i));
                                initCustomSpinner();
                            }
                        } catch (Exception e) {
                            e.printStackTrace();
                        }


                    } else {

                        Toast.makeText(MainActivity.this, newInsuranceModel.getMsg() + "", Toast.LENGTH_SHORT).show();
                    }
                }

                @Override
                public void onFailure(Call<NewInsuranceModel> call, Throwable t) {

                    hideProgressDialog();
                    Toast.makeText(MainActivity.this, " Again Error", Toast.LENGTH_LONG).show();

                }
            });


        } else {

            loadSpinnerData();
        }


        nestedScrollView = findViewById(R.id.nestedScrollView);
        InsureName = findViewById(R.id.text_insured_name);
        BankHypotical = findViewById(R.id.text_bank_hypothecation);
        NextButtonmaterialRippleLayout = findViewById(R.id.next_button_main_activity);


        NextButtonmaterialRippleLayout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                NextPage();


            }
        });
    }


    private void loadSpinnerData() {
        databaseHelper = new DatabaseHelper(getApplicationContext());


        try {



            ArrayList<Company> labels = databaseHelper.getAllLabels();
            ArrayAdapter dataAdapter = new ArrayAdapter<>(this,
                    android.R.layout.simple_spinner_item, labels);
            appCompatSpinner.setAdapter(dataAdapter);
           appCompatSpinner.setPrompt("Select Insurance Company");
            dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        SpinnerData = parent.getItemAtPosition(position).toString();
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }


    public class SaveIntoDatabase extends AsyncTask<DataCompany, DataCompany, Boolean> {

        private final String TAG = SaveIntoDatabase.class.getSimpleName();

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected Boolean doInBackground(DataCompany... params) {
            DataCompany dataCompany = params[0];
            databaseHelper.addDataCompany(dataCompany);
            return null;
        }
    }


    protected void hideProgressDialog() {
        viewDialog.dismiss();
    }

    protected void showProgressDialog() {
        viewDialog.show();
    }

    protected void showProgressDialog(String message) {
        showProgressDialog();
    }

    private void initCustomSpinner() {
        CustomSpinnerAdapter customSpinnerAdapter = new CustomSpinnerAdapter(MainActivity.this, dataCompanies);
        appCompatSpinner.setAdapter(customSpinnerAdapter);
        appCompatSpinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                SpinnerData = parent.getItemAtPosition(position).toString();
                // Toast.makeText(context, "", Toast.LENGTH_SHORT).show();
                // sstate = (String) parent.getItemAtPosition(position);


            }

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


    public class CustomSpinnerAdapter extends BaseAdapter implements SpinnerAdapter {

        private final Context activity;
        private ArrayList<DataCompany> asr;

        public CustomSpinnerAdapter(Context context, ArrayList<DataCompany> asr) {
            this.asr = asr;
            activity = context;
        }

        public int getCount() {
            return asr.size();
        }

        public Object getItem(int i) {
            return asr.get(i);
        }

        public long getItemId(int i) {
            return (long) i;
        }

        @Override
        public View getDropDownView(int position, View convertView, ViewGroup parent) {
            TextView txt = new TextView(MainActivity.this);
            txt.setPadding(16, 16, 16, 16);
            txt.setTextSize(18);
            txt.setGravity(Gravity.CENTER);
            txt.setText(asr.get(position).getCompanyName());
            txt.setTextColor(Color.parseColor("#2196F3"));
            return txt;
        }

        public View getView(int i, View view, ViewGroup viewgroup) {
            TextView txt = new TextView(MainActivity.this);
            txt.setGravity(Gravity.CENTER);
            txt.setPadding(16, 16, 16, 16);
            txt.setTextSize(14);
            txt.setCompoundDrawablesWithIntrinsicBounds(0, 0, R.drawable.ic_arrow_drop_down_white_24dp, 0);
            txt.setText(asr.get(i).getCompanyName());
            txt.setTextColor(Color.parseColor("#FFFFFF"));
            return txt;
        }
    }

    private void NextPage() {

        String editInsureName = InsureName.getText().toString();
        String editBankHypotical = BankHypotical.getText().toString();
        int pos = appCompatSpinner.getSelectedItemPosition();
        if (pos == 0) {
            Snackbar snackbar = Snackbar
                    .make(nestedScrollView, "Select Insurance Company", Snackbar.LENGTH_LONG);
            snackbar.show();
            View snackBarView = snackbar.getView();
            snackBarView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
            appCompatSpinner.requestFocus();

        } else if (TextUtils.isEmpty(editInsureName)) {
            Snackbar snackbar = Snackbar
                    .make(nestedScrollView, "Enter Insured Name / Society Name", Snackbar.LENGTH_LONG);
            snackbar.show();
            View snackBarView = snackbar.getView();
            snackBarView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
            InsureName.requestFocus();
        } else if (TextUtils.isEmpty(editBankHypotical)) {
            Snackbar snackbar = Snackbar
                    .make(nestedScrollView, "Enter Bank Hypothecation With", Snackbar.LENGTH_LONG);
            snackbar.show();
            View snackBarView = snackbar.getView();
            snackBarView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
            BankHypotical.requestFocus();
        } else {
            Intent nextIntent = new Intent(MainActivity.this, FarmerInformationActivity.class);
            //  nextIntent.putExtra("id", dataCompanies.get(appCompatSpinner.getSelectedItemPosition()).getId());
            nextIntent.putExtra("id", labels.get(appCompatSpinner.getSelectedItemPosition()).getCompanyId());
            nextIntent.putExtra("farmer_insure_name", InsureName.getText().toString());
            nextIntent.putExtra("farmer_bank_hypo", BankHypotical.getText().toString());
            startActivity(nextIntent);
            Snackbar snackbar = Snackbar.make(nestedScrollView, "Saved Successfully", Snackbar.LENGTH_LONG);
            snackbar.show();
            View snackBarView = snackbar.getView();
            snackBarView.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
        }
    }

}

Merci d'avance p>


8 commentaires

Commencez par obtenir COMPANY_ID de DB dans une chaîne, puis utilisez ForLoop pour faire correspondre cet identifiant de la liste / Arraylist. s'il correspond, coupez la boucle et obtenez la position de forloop et utilisez spinner.setSelection (position);


voir Spinner # getSelectedItemId ()


@Shane pouvez-vous le modifier dans mon code s'il vous plaît ...


@pskink essaie déjà mais obtient une valeur nulle


non, getSelectedItemId () renvoie une valeur long , vous ne pouvez donc pas obtenir null


@pskink désolé mais devenir nul dans mon cas


getSelectedItemId renvoie long - donc au lieu d'un ID valide, vous pouvez obtenir -1 par exemple, mais jamais null


@pskink utilisant getSelectedItemId obtenir un ID de spinner particulier Mais je veux COMPANY_ID de la base de données SQLite Pouvez-vous m'aider?


3 Réponses :


2
votes
  • Vous devez créer une classe de modèle personnalisée (getter et setter). par exemple, société

  • Stockez toutes vos données dans List labels = new ArrayList () dans les méthodes getAllLabels ().

  • Après dans onItemSelected

SpinnerData = getAllLabels (). get (position) .COMPANY_ID (qui est dans votre classe de modèle Company)

Vous obtiendrez SpinnerData COMPANY_ID de l'élément sélectionné


2 commentaires

pouvez-vous le faire pour moi pls


suivez ce tutoriel simplifiedcoding.net/android-sqlite-database-example



0
votes

Reportez-vous à ce code
C'est l'exemple de code pour obtenir l'ID d'état de l'état sélectionné dans le spinner à partir de sqlite db.

Étape 1: obtenir la liste des états avec toutes les colonnes de la table d'état

public String getstateid(String states){

    String stateid="";

    String selectQuerys = "SELECT * FROM state WHERE state_name = '"+states+"'";

    SQLiteDatabase db = this.getReadableDatabase();

    try
    {
        Cursor cursor = db.rawQuery(selectQuerys, null);
        if (cursor.moveToFirst()) {
            do {
                stateid=cursor.getString(0);
            } while (cursor.moveToNext());
        }
        cursor.close();
    }
    catch (SQLException s)
    {
        Log.v("Exception",s.toString());
    }
    db.close();

    return stateid;
}

Étape 2: obtenir la valeur d'état sélectionnée de l'adaptateur de spinner.

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

            sstate = (String) parent.getItemAtPosition(position);
            sstateid=salesDB.getstateid(sstate);

        }

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

        }
    });

Étape 3: appelez cette méthode salesDB.getstateid (sstate) avec le paramètre comme valeur d'état.

  public List<String> getStates(){
    List<String> states = new ArrayList<String>();

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

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

    if (cursor.moveToFirst()) {
        do {
            states.add(cursor.getString(1));
        } while (cursor.moveToNext());
    }

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

    return states;
}


0 commentaires

2
votes

créer une classe de modèle Company convenient

      public ArrayList<Company> getAllLabels(){

   ArrayList<Company> labels = new ArrayList<Company>();
        // Select All Query
        String selectQuery = "SELECT  * FROM " + TABLE_NAME_OFFLINE_LOAD_DATA;

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

        // looping through all rows and adding to list
        if (cursor.moveToFirst()) {
            do {
                String companyId = cursor.getString(cursor.getColumnIndex(COMPANY_ID));
                String companyName = cursor.getString(cursor.getColumnIndex(COMPANY_NAME));

                labels.add(new Company(companyId,companyName);
            } while (cursor.moveToNext());
        }

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

        // returning lables
        return labels;
    }

Apportez les modifications suivantes à la méthode loadSpinnerData ()

 private void loadSpinnerData() {
            databaseHelper = new DatabaseHelper(getApplicationContext());
            try {
                 labels = databaseHelper.getAllLabels();
                ArrayAdapter dataAdapter = new ArrayAdapter<>(this,
                        android.R.layout.simple_spinner_item, lables);
                appCompatSpinner.setAdapter(dataAdapter);
                appCompatSpinner.setPrompt("Select Insurance Company");
                dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);

            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        @Override
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
            SpinnerData = parent.getItemAtPosition(position).toString();
        }

        @Override
        public void onNothingSelected(AdapterView<?> arg0) {
            // TODO Auto-generated method stub

        }


0 commentaires