Android:将 id 和 name 从微调器中的选定项目放入两个不同的 textViews
Posted
技术标签:
【中文标题】Android:将 id 和 name 从微调器中的选定项目放入两个不同的 textViews【英文标题】:Android: Place id and name from selected item in spinner into two different textViews 【发布时间】:2021-12-30 09:02:54 【问题描述】:我对 android 完全陌生,但曾在带有组合框的 windows 窗体中工作。然而,微调器是 保龄球! 我有一个找不到答案的问题,现在作为最后的手段,我必须向您求助。 我正在构建一个简单的 android 应用程序,它可以将数据读取和写入 SQL 服务器数据库。 从数据库中,我需要通过查询将教师的姓名和身份证号加载到微调器中。 然后必须将微调器中所选教师的姓名放在 textView 中(textView1 命名为脚本中的测试文本)。 有了以上,我就没有问题了。
我的问题是我想将微调器中所选教师的 id 号放入第二个 textView 中。 总结一下:我在微调器中选择了一位老师,老师的姓名和 ID 出现在两个单独的文本视图中。
我包括包含我当前努力的方法。
任何帮助都可以。
//用老师的名字填充微调器,并将名字放在 textView(testText) 公共 void fillSpinner()
Connection conn = connection();//connection to sql server database
try
if (conn != null)
testText.setText("Connected to server!");
String query = "SELECT id_Teacher, teacherName FROM Teachers";
PreparedStatement pst = conn.prepareStatement(query);
ResultSet rs = pst.executeQuery();
ArrayList<String> data = new ArrayList<String>();
while (rs.next())
String name = rs.getString("teacherName");
final String idTeacher = rs.getString("id_Teacher");
data.add(name);
data.add(idTeacher);
ArrayAdapter array = new ArrayAdapter(this, android.R.layout.simple_list_item_1, data);
spinner.setAdapter(array);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
testText.setText(spinner.getSelectedItem().toString());//place name in textview
fillIdTextView();
@Override
public void onNothingSelected(AdapterView<?> parent)
);
else
testText.setText("IP Address incorrect or \n not entered!");
catch (Exception e)
e.printStackTrace();
//Fill textView(txtId) with the id_Teacher of the nameTeacher selected in the spinner.
public void fillIdTextView()
Connection conn = connection();
try
if (conn != null)
String query = "SELECT id_Teacher FROM Teachers";
PreparedStatement pst1 = conn.prepareStatement(query);
ResultSet rs = pst1.executeQuery();
ArrayList<String> dataId = new ArrayList<String>();
while (rs.next())
String idTeacher = rs.getString("id_Teacher");
dataId.add(idTeacher);
dataId.add(spinner.getSelectedItem().toString());
ArrayAdapter array = new ArrayAdapter(this, android.R.layout.simple_list_item_1, dataId);
txtId.setText(array.toString());//place the id of the selected teacher in textview.
// spinnerId.setAdapter(array);//place id in second spinner
else
testText.setText("IP Address incorrect or \n not entered!");
catch (Exception e)
e.printStackTrace();
'''
【问题讨论】:
【参考方案1】:那是因为这个部分:
dataId.add(idTeacher);
dataId.add(spinner.getSelectedItem().toString());
您的适配器将它们视为列表中的两个不同项目,这就是它们显示在两个不同文本视图中的原因。
如果您希望它们显示在同一个文本视图中,您必须创建一个名为 Teacher 的类,其中包含两个字段(名称、id)。然后创建一个教师类型的对象列表并将其传递给您的适配器。这就是它如何理解他们实际上是一个人/项目而不是两个。
【讨论】:
以上是关于Android:将 id 和 name 从微调器中的选定项目放入两个不同的 textViews的主要内容,如果未能解决你的问题,请参考以下文章
在我的微调器 POJO 中,我有 id 和 name。所以在按钮单击时,我想在 kotlin android 中发送我的微调器 ID 而不是名称