java - 如何获取微调器上所选项目的 ID?

标签 java android database android-spinner insert-into

我创建了一个 Activity ,其中用户需要从微调器中选择一个名称,在文本框中输入一条消息,然后单击一个按钮才能发送消息。微调器中有 2 个字符串(名字和姓氏)。数据库中的每个姓名还有一个唯一的 ID。 如何从数据库中获取姓名的 ID?

示例数据:ID:265958998、Fname:Leo、Lname:Cruz

下面是我的代码

发送按钮:

            btnsend.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                String USERID=getIntent().toString();

                db.open();
            *//    db.insertMessage(USERID,  );*
                db.close();

                et10.setText("");
                Toast.makeText(getApplicationContext(),
                        "Message Sent", Toast.LENGTH_SHORT).show();}}
            });

将消息插入数据库:

   void insertMessage(String sender, String recipient) {
    SQLiteDatabase db = DBHelper.getWritableDatabase();

    ContentValues initialValues = new ContentValues();
    initialValues.put(KEY_SENDER, sender);
    initialValues.put(KEY_RECIPIENT, recipient);
    db.insert(TABLE_MESSAGE, null, initialValues);


    db.close(); // Closing database connection
}

旋转查询:

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

    // Select All Query
    String selectQuery = "SELECT tableinfo.*, tableacc.*" +
            "FROM tableinfo JOIN tableacc ON tableinfo.userid = tableacc.userid WHERE tableacc.userstatus=? ";
    Cursor cursor = db.rawQuery(selectQuery , new String[]{ "REGISTERED"});

    SQLiteDatabase db = DBHelper.getReadableDatabase();
    // looping through all rows and adding to list
    if (cursor.moveToFirst()) {
        do {
            labels.add(cursor.getString(4)+""+cursor.getString(3));
        } while (cursor.moveToNext());
    }

    // closing connection
    cursor.close();
    db.close();
    return labels;
}

CallSpinner:

        spn1();

}
public void spn1() {
    // database handler
    DBAdapter db = new DBAdapter(getApplicationContext());
    List<String> lables = db.getAllRegisteredInfoAcc();
    ArrayAdapter<String> dataAdapter = new ArrayAdapter<String>(this,
            android.R.layout.simple_spinner_item, lables);

     dataAdapter.setDropDownViewResource
         (android.R.layout.simple_spinner_dropdown_item);
    spnr1.setAdapter(dataAdapter);
}

最佳答案

您应该为微调器创建一个适配器,将 SQLite 中的数据加载到对象数组中,然后将数组中的对象映射到通过 toString() 函数反射(reflect)到微调器中。

首先为对象创建一个类并添加 toString() 函数

public class MyUser {
 private int id = 0; 
 private String name = ""; 
 private String lastName ="";

 public MyUser(){}


 public String toString()
 {
    return(name + " " + lastName);
 }

}

然后将 sqlite 中的数据加载到该对象的数组中。

在旋转器中

users.addAll(myDataSource.getUsers());

        ArrayAdapter adapter = new ArrayAdapter(this, android.R.layout.simple_spinner_item, users);
        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spnr1.setPrompt("Select your User");
        spnr1.setAdapter(
                new NothingSelectedSpinnerAdapter(
                        adapter,
                        R.layout.row_state_register_nothing_selected,
                        // R.layout.contact_spinner_nothing_selected_dropdown, // Optional
                        this));

所以在 onItemClickListener() 中:

spnr1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
            @Override
            public void onItemSelected(AdapterView<?> adapterView, View view, int position, long id) {
                if (position > 0) { //because of the prompt
                    userID = users.get(position - 1).getUserId(); 
                    // DO WHAT YOU WANT
                }
            }

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

            }
        });

关于java - 如何获取微调器上所选项目的 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47887992/

相关文章:

java - 使用 Spring 将嵌套集合中的对象转换为 JSON

java - 方法创建新实例

java - Spring Boot 无法识别 application.properties 文件

Android:获取短信发送时间

Android,使用单个 startActivityForResult 选择和裁剪图像,但检索原始图像 URI?

database - 复杂的数据库关系(联结表)

java - JavaFX 计算器中的方程式问题

android - Fragment 和 BackStack 无法正常工作

database - Azure 认知搜索能否用作某些数据的主数据库?

python - django: select_related() 在一个已经存在的对象上?