Spinner dropdown list displays wrong values

43 Views Asked by At

I created a spinner and set values to array list. But when runtime wrong values displayed in drop down list.enter image description here

i try to add some values in array list and that values set to spinner.but oi get wrong values in spinner

 public ArrayList<PackLstInf> loadPackData() {
       /* Cursor cr = MainActivity.dbMain.getSearchPack(It_Code);
        ArrayList<PackLstInf> myPacks = new ArrayList<PackLstInf>();
        while (cr.moveToNext()) {
            myPacks.add(new PackLstInf(cr.getString(cr.getColumnIndex(DBHelper.colPack_Code)),
                                       cr.getString(cr.getColumnIndex(DBHelper.colPack_Name))));
        }
        cr.close();*/

        ArrayList<PackLstInf> myPacks = new ArrayList<PackLstInf>();
        myPacks.add(new PackLstInf("USA", 308745538));
        myPacks.add(new PackLstInf("Sweden", 9482855));
        myPacks.add(new PackLstInf("Canada", 34018000));

        return myPacks;
    }





  myPack = loadPackData();
  ArrayAdapter<PackLstInf> myAdapter = new ArrayAdapter<PackLstInf>(activity,     android.R.layout.simple_spinner_item, myPack);
                spPack.setAdapter(myAdapter);
2

There are 2 best solutions below

0
Salma Shaikh On

For simple solutions you can just Overwrite the "toString()" in your object.

@Override
public String toString() {
    return this.name; // What to display in the Spinner list.
}
0
Adnan Yousaf On

To display a specific string field from your PackLstInf objects in the spinner, you can override the toString() method in your PackLstInf class to return the desired string representation. Here's how you can modify your code:

public class PackLstInf {
    private String packName;
    private int population;

    // Constructor
    public PackLstInf(String packName, int population) {
        this.packName = packName;
        this.population = population;
    }

    // Getter for packName
    public String getPackName() {
        return packName;
    }

    // Override toString() to return packName
    @Override
    public String toString() {
        return packName;
    }
}

public ArrayList<PackLstInf> loadPackData() {
    ArrayList<PackLstInf> myPacks = new ArrayList<>();
    myPacks.add(new PackLstInf("USA", 308745538));
    myPacks.add(new PackLstInf("Sweden", 9482855));
    myPacks.add(new PackLstInf("Canada", 34018000));
    return myPacks;
}

// Load data
ArrayList<PackLstInf> myPack = loadPackData();

// Create adapter
ArrayAdapter<PackLstInf> myAdapter = new ArrayAdapter<>(activity, android.R.layout.simple_spinner_item, myPack);

// Set adapter to spinner
spPack.setAdapter(myAdapter);