【问题标题】:How I get the Id of an itemSelect of a Spinner from SQLite Android如何从 SQLite Android 获取 Spinner 的 itemSelect 的 ID
【发布时间】:2026-01-19 13:05:02
【问题描述】:

我正在尝试获取在 Spinner 上选择的项目的 Id,我是 Android Studio 的新程序员,我使用适配器,但我得到的唯一想法是项目的位置,而不是来自sqllite 数据库

我正在使用片段

public class FragmentVentas extends Fragment {
  public View onCreateView(LayoutInflater inflater, ViewGroup container,
    Bundle savedInstanceState) {
    // Inflate the layout for this fragment
    DBVentas dbv = new DBVentas(getActivity(), "DBVentas", null, 1);
    db = dbv.getWritableDatabase();

    final View view = inflater.inflate(R.layout.fragment_fragment_ventas, container, false);

    fSpinClientes = (Spinner) view.findViewById(R.id.spinnerClientesVentas);
    loadSpinnerDataHama();

    public void onItemSelected(AdapterView << ? > parent, View view, int pos, long id) {
      String list = parent.getItemAtPosition(pos).toString();
      Integer l = parent.getSelectedItemPosition();
      //showing selected spinner item
      Toast.makeText(parent.getContext(), "You selected: " + list + " Pos: " + l + " l1", Toast.LENGTH_LONG).show();

    }

    public void onNothingSelected(AdapterView << ? > arg0) { // do nothing
    }

  });

return view;
}

我的班级 SpinerObject

public class SpinnerObject {

    private  int databaseId;
    private String databaseValue;

    public SpinnerObject ( int databaseId , String databaseValue ) {
        this.databaseId = databaseId;
        this.databaseValue = databaseValue;
    }

    public int getId () {
        return databaseId;
    }

    public String getValue () {
        return databaseValue;
    }

    @Override
    public String toString () {
        return databaseValue;
    }
}

我的数据库类

public class DBVentas extends SQLiteOpenHelper {

    public List < SpinnerObject> getAllLabels(){
        List < SpinnerObject > labels = new ArrayList < SpinnerObject > ();
        // Select All Query
        String selectQuery = "SELECT idCliente, Nombre FROM Clientes";

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

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

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

    // returning labels
    return labels;
}

无法跟踪问题。

【问题讨论】:

  • 显示loadSpinnerDataHama()函数代码
  • 您将哪些数据绑定到您的适配器?如果它是微调器对象,那么您可以将parent.getSelectedItem() 转换为您的对象并调用您的类的getId() 方法。

标签: android sqlite android-studio android-fragments android-spinner


【解决方案1】:
@Override    
public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
       SpinnerObject item = (SpinnerObject) parent.getItemAtPosition(pos);
       String databaseValue = item.getValue();
       int databaseId = item.getId();
    }

    public void onNothingSelected(AdapterView<?> arg0) {
      // do nothing
    }

});

【讨论】:

    【解决方案2】:

    以这种方式更改您的代码。

    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int pos, long id)  {
    
         if (parent.getItemAtPosition(pos).toString().equals(YOUR_STRING_HERE)){
            //Do something if YOUR_STRING_HERE is selected
         }
    }
    

    【讨论】: